/// <summary> /// Creates the wrapper object property wrapper. /// </summary> private static PropertyDescriptor CreateWrapperObjectPropertyWrapper(TypeMetaData context, PropertyInfo property) { var actualReader = GetPropertyReader(property, context); var actualWriter = GetPropertyWriter(property, context); var reader = property.CanRead ? new Func <object, object>(o => actualReader.GetValue(o)) : null; var writer = property.CanWrite ? new Action <object, object>((o, v) => actualWriter.SetValue(o, v)) : null; var descriptor = new DelegatePropertyDescriptor( property.Name, property.DeclaringType, property.PropertyType, reader, writer ); return(descriptor); }
/// <summary> /// Creates the wrapped object property wrapper. /// </summary> private static PropertyDescriptor CreateWrappedObjectPropertyWrapper(TypeMetaData context, PropertyInfo property) { GetPropertyReader(property, context); GetPropertyWriter(property, context); var reader = property.CanRead ? new Func <object, object>(o => ((IEditable)o).ReadProperty(property)) : null; var writer = property.CanWrite ? new Action <object, object>((o, v) => ((IEditable)o).WriteProperty(property, v)) : null; var descriptor = new DelegatePropertyDescriptor( property.Name, property.DeclaringType, property.PropertyType, reader, writer ); return(descriptor); }