public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes) { var properties = new PropertyDescriptorCollection(new PropertyDescriptor[0]).Cast <PropertyDescriptor>().ToList(); var settings = (IBindingSettings)value; if (settings.IsConfigured()) { properties.AddRange(DesignComponentTypeDescriptor <TValue, IBindingSettings> .GetComponentProperties( this.ProjectTypeProvider, this.Components, settings.TypeId)); } return(new PropertyDescriptorCollection(properties.ToArray())); }