private static GroupViewModel CreateGroupFromClass(GroupViewModel parent, Type classType, Func<ComfoBoxClient> clientFunc) { var group = new GroupViewModel(classType.Name); parent.Add(group); foreach (var subType in classType.GetNestedTypes()) { CreateGroupFromClass(group, subType, clientFunc); } var instance = classType.CreateInstance(); foreach (var propertyInfo in classType.Properties(Flags.Default)) { var propertyValue = instance.GetPropertyValue(propertyInfo.Name) as IItemValue; if (propertyValue != null && propertyValue.IsReadOnly) { group.Add(new ReadOnlyItemViewModel(propertyInfo.Name, clientFunc) {Item = propertyValue}); } else if (propertyValue is AnalogValue || propertyValue is AnalogValue) { group.Add(new AnalogValueItemViewModel(propertyInfo.Name, clientFunc) {Item = propertyValue}); } else if (propertyValue is DateValue) { group.Add(new ReadOnlyItemViewModel(propertyInfo.Name, clientFunc) {Item = propertyValue}); } else { var enumItem = propertyValue as IEnumValue; group.Add(new EnumItemViewModel(propertyInfo.Name, clientFunc) {Item = propertyValue}); } } return group; }
public StructSerializer (Serializers serializer, Type type) { var properties = type.Properties (Flags.InstancePublic) .Where (n => !serializer.IsIgnored(n)).ToArray (); getters = properties.Select (n => n.DelegateForGetPropertyValue ()).ToArray (); setters = properties.Select (n => n.DelegateForSetPropertyValue ()).ToArray (); this.serializers = properties.Select (n => serializer.FromDeclared (n.PropertyType)).ToArray (); this.newObj = type.DelegateForCreateInstance (); }
private static IEnumerable<ModelNodeAttribute> CreateModelNodeAttributes(IObjectSpace objectSpace,Type interfaceExtender) { foreach (var propertyInfo in interfaceExtender.Properties()) { var modelNodeAttribute = objectSpace.CreateObject<ModelNodeAttribute>(); modelNodeAttribute.Name = propertyInfo.Name; var descriptionAttribute = propertyInfo.GetCustomAttributes(true).OfType<DescriptionAttribute>().FirstOrDefault(); if (descriptionAttribute != null) modelNodeAttribute.Text = descriptionAttribute.Description; yield return modelNodeAttribute; } }
public static object Build(Type requestType, RequestContext requestContext) { var message = requestType.CreateInstance(); var properties = requestType.Properties(Flags.InstanceAnyVisibility); var queryStringValues = ConvertToRouteValueDictionary(requestContext.HttpContext.Request.QueryString); var formValues = ConvertToRouteValueDictionary(requestContext.HttpContext.Request.Form); foreach (var property in properties) { var propertyValue = RetrieveValue(property.Name, property.PropertyType, requestContext, queryStringValues, formValues); if (propertyValue == null) { continue; } message.SetPropertyValue(property.Name, propertyValue); } return message; }
public IEnumerable<PropertyInfo> GetProperties(Type type) { var properties = type.Properties(_commonFlags | Flags.Static | Flags.Instance); return properties; }