Exemplo n.º 1
0
 /// <summary>
 /// Determines the Type to use as a basis for generating a PropertyEditor for the specified member
 /// by evaluating the members current value and static Type.
 /// </summary>
 /// <param name="member"></param>
 /// <param name="values"></param>
 /// <returns></returns>
 protected Type ReflectTypeForMember(MemberInfo member, IEnumerable <object> values)
 {
     if (member is FieldInfo)
     {
         FieldInfo field = member as FieldInfo;
         if (values != null)
         {
             return(PropertyEditor.ReflectDynamicType(field.FieldType, values.Where(v => v != null).Select(v => field.GetValue(v))));
         }
         else
         {
             return(field.FieldType);
         }
     }
     else if (member is PropertyInfo)
     {
         PropertyInfo property = member as PropertyInfo;
         if (values != null)
         {
             return(PropertyEditor.ReflectDynamicType(property.PropertyType, values.Where(v => v != null).Select(v => property.GetValue(v, null))));
         }
         else
         {
             return(property.PropertyType);
         }
     }
     else
     {
         throw new ArgumentException("Only PropertyInfo and FieldInfo members are supported");
     }
 }