TypeDescriptor.AddAttributes и свойство - PullRequest
       27

TypeDescriptor.AddAttributes и свойство

1 голос
/ 21 февраля 2012

Возможно ли что-то подобное?

Существует класс с атрибутом [DataContract]. Этот класс имеет два свойства, одно из которых int, а другое - string. Есть два разных экземпляра этого класса.

Можно ли динамически назначать атрибут [DataMember] только для свойства int первого экземпляра и только для свойства string второго экземпляра? Если да, не могли бы вы предоставить фрагмент?

1 Ответ

0 голосов
/ 21 февраля 2012

Нет, вы не можете назначать атрибуты во время выполнения, не выполняя довольно сложную магию с динамической генерацией классов.

Хорошо, я не понимаю TypeDescriptor :) Таким образом, в общем случае вам нужно создать собственный ICustomTypeDescriptor и реализовать метод GetProperties для возврата массива атрибутов расширяемого атрибута PropertyDescriptor ( после конструктора ).

static Attribute[] AddAttribute(Attribute[] attributes, Attribute attr) {
    Array.Resize(ref attributes, attributes.Length + 1);
    attributes[attributes.Length - 1] = new attr;
    return attributes;
}

public MyPropertyDescriptor(MemberDescriptor propDef)
       : base(propDef, AddAttribute(propDef.Attributes, new DataMembeAttribute()))
...