private static IPropertyDefinition BuildProperty(IMicroModel model, string propertyName, Type propertyType) { var property = new DelegatePropertyDescriptor(propertyName, model, propertyType); model.AddProperty(property); return(property); }
PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties(Attribute[] attributes) { lock (m_parameters) { var properties = new PropertyDescriptor[m_parameters.Count]; for (int i = 0; i < m_parameters.Count; ++i) { var parm = m_parameters[i]; properties[i] = new DelegatePropertyDescriptor(GetType(), parm.Name, typeof(ParameterNode), o => GetParameterValue(parm.Name), null); } ; return(new PropertyDescriptorCollection(properties)); }; }
public static IEnumerable <IPropertyDefinition> AllProperties(this IMicroModel model, object source) { var properties = TypeDescriptor.GetProperties(source).OfType <PropertyDescriptor>(); var propertiesToAdd = new List <IPropertyDefinition>(); foreach (var sourceProperty in properties) { var property = sourceProperty; var propertyToAdd = new DelegatePropertyDescriptor(property.Name, model, property.PropertyType); propertyToAdd.Getter = x => property.GetValue(source); if (!property.IsReadOnly) { propertyToAdd.Setter = (x, v) => property.SetValue(source, v); } model.AddProperty(propertyToAdd); propertiesToAdd.Add(propertyToAdd); } return(propertiesToAdd); }