Здравствуйте, Аноним, Вы писали:
А>public class A
А>{
А> [DisplayName(Name = "aaaaa")]
А> public object Value {get; set;}
А>}
А>Как программно изменить значение атрибута?
Атрибут — это метаданные. Сами метаданные изменить в рантайме нельзя.
Но некоторые методы доступа к метаданным позволяют вмешаться в процесс получения метаданных и управлять им.
А>Получится ли для этих целей использовать PropertyDescriptor или ICustomTypeDescriptor, что бы при запросе атрибутов — возвращались программно сгенерированные?
Ключёвое тут — это как происходит "запросе атрибутов". В дотнете есть несколько способов для этого: CustomAttributeData::GetCustomAttributes, MemberInfo::GetCustomAttributes и TypeDescriptor::GetAttributes/MemberDescriptor::Attributes. Последний способ расширяем, но и ограничен — атрибутами уровня типа/свойства/события.
Если вы "переедете" этот способ и будете возвращать что-то своё, то те, кто получают доступ к атрибутам другими путями, ваших изменений "не увидят".
Кто и каким образом будет запрашивать интересующие вас атрибуты?