public override PropertyDescriptorCollection GetProperties(Attribute[] attributes) { var cols = base.GetProperties(); var props = new PropertyDescriptorCollection(null); foreach (FieldInfo fi in _instance.GetType().GetFields()) { var prop = new MyPropertyDesciptor(fi, attributes); props.Add(prop); if (fi.FieldType.Namespace == "System.Collections.Generic") { Type[] args = fi.FieldType.GetGenericArguments(); foreach (Type arg in args) modifyNonSystemTypes(arg); } else { modifyNonSystemTypes(fi.FieldType); } } // Return the computed properties return props; }
public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes) { //var cols = base.GetProperties(); var props = new PropertyDescriptorCollection(null); foreach (FieldInfo fi in value.GetType().GetFields()) { var prop = new MyPropertyDesciptor(fi, attributes); props.Add(prop); if (fi.FieldType.Namespace == "System.Collections.Generic") { Type[] args = fi.FieldType.GetGenericArguments(); foreach (Type arg in args) MyCustomTypeDescriptor.modifyNonSystemTypes(arg); } { MyCustomTypeDescriptor.modifyNonSystemTypes(fi.FieldType); } } if (props.Count > 0) return props; return base.GetProperties(context, value, attributes); }