, Но в других местах свойство - это просто свойства, а модель компонента не используется. Самое простое - посмотреть, работает ли оно для вашего приложения.
я есть класс, который программист может использовать для динамического добавления новых свойств. Для этого он реализует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
называется. Я думаю, что это правильный путь?