Example #1
0
        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 ();
		}
Example #3
0
 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;
        }
Example #5
0
 public IEnumerable<PropertyInfo> GetProperties(Type type)
 {
     var properties = type.Properties(_commonFlags | Flags.Static | Flags.Instance);
     return properties;
 }