, Но в других местах свойство - это просто свойства, а модель компонента не используется. Самое простое - посмотреть, работает ли оно для вашего приложения.

я есть класс, который программист может использовать для динамического добавления новых свойств. Для этого он реализуетICustomTypeDescriptor быть в состоянии переопределитьGetProperties() метод.

public class DynamicProperty
{
    public object Value { get; set; }

    public Type Type { get; set; }

    public string Name { get; set; }

    public Collection<Attribute> Attributes { get; set; }
}

public class DynamicClass : ICustomTypeDescriptor
{
    // Collection to code add dynamic properties
    public KeyedCollection<string, DynamicProperty> Properties
    {
        get;
        private set;
    }

    // ICustomTypeDescriptor implementation
    PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties()
    {
        // Properties founded within instance
        PropertyInfo[] instanceProps = this.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);

        // Fill property collection with founded properties
        PropertyDescriptorCollection propsCollection = 
            new PropertyDescriptorCollection(instanceProps.Cast<PropertyDescriptor>().ToArray());

        // Fill property collection with dynamic properties (Properties)
        foreach (var prop in Properties)
        {
            // HOW TO?
        }

        return propsCollection;
    }
}

Можно ли перебрать список свойств, чтобы добавить каждое свойство вPropertyDescriptorCollection?

В основном я хочу, чтобы программист мог добавитьDynamicProperty в коллекцию, которая будет обрабатыватьсяGetProperties, Что-то вроде:

new DynamicClass()
{
    Properties = {
        new DynamicProperty() {
            Name = "StringProp",
            Type = System.String,
            Value = "My string here"
        },

        new DynamicProperty() {
            Name = "IntProp",
            Type = System.Int32,
            Value = 10
        }
    }
}

Теперь теProperties будет установлен в свойствах экземпляра всякий раз, когдаGetPropertiesназывается. Я думаю, что это правильный путь?

Ответы на вопрос(1)

Ваш ответ на вопрос