protected Tuple<Func<object>, Action<object>, Type> GetPropertyDelegates(string name)
{
PropertyInfo prop = GetType().GetProperty(name);
Func<object> getter = (Func<object>)Delegate.CreateDelegate(typeof(Func<object>), this, prop.GetGetMethod(), true);
Action<object> setter = (Action<object>)Delegate.CreateDelegate(typeof(Action<object>), this, prop.GetSetMethod(), true);
return Tuple.Create(getter, setter, prop.PropertyType);
}