protected override IEnumerable <IPropertyDefinition> GenerateChildrenProperties() { object value = this.ValueInstance; if (value == null) { return(new IPropertyDefinition[0]); } var propertyDefs = new List <IPropertyDefinition>(); try { PropertyDescriptorCollection descriptors = PropertyGridUtilities.GetPropertyDescriptors(value); foreach (PropertyDescriptor descriptor in descriptors) { if (descriptor.IsBrowsable) { DescriptorPropertyDefinition def = new DescriptorPropertyDefinition(descriptor, this); def.InitProperties(); propertyDefs.Add(def); } } } catch (Exception) { //TODO: handle this some how } return(propertyDefs); }
private List <PropertyItem> GeneratePropertyItems(object instance) { var propertyItems = new List <PropertyItem>(); if (instance != null) { try { PropertyDescriptorCollection descriptors = PropertyGridUtilities.GetPropertyDescriptors(instance); if (!AutoGenerateProperties) { List <PropertyDescriptor> specificProperties = new List <PropertyDescriptor>(); if (PropertyDefinitions != null) { foreach (PropertyDefinition pd in PropertyDefinitions) { foreach (PropertyDescriptor descriptor in descriptors) { if (descriptor.Name == pd.Name) { specificProperties.Add(descriptor); break; } } } } descriptors = new PropertyDescriptorCollection(specificProperties.ToArray()); } foreach (PropertyDescriptor descriptor in descriptors) { if (descriptor.IsBrowsable) { propertyItems.Add(PropertyGridUtilities.CreatePropertyItem(descriptor, this)); } } } catch (Exception) { //TODO: handle this some how } } return(propertyItems); }