Я ищу способ локализовать имена свойств, отображаемые в PropertyGrid. Имя свойства можно «переопределить» с помощью атрибута DisplayNameAttribute. К сожалению, атрибуты не могут иметь неконстантные выражения. Поэтому я не могу использовать строго типизированные ресурсы, такие как:
Код: Выделить всё
class Foo
{
[DisplayAttribute(Resources.MyPropertyNameLocalized)] // do not compile
string MyProperty {get; set;}
}
Я осмотрелся и нашел предложение наследовать от DisplayNameAttribute, чтобы иметь возможность использовать ресурс. В итоге я бы получил такой код:
Код: Выделить всё
class Foo
{
[MyLocalizedDisplayAttribute("MyPropertyNameLocalized")] // not strongly typed
string MyProperty {get; set;}
}
Однако я теряю преимущества строго типизированных ресурсов, что определенно нехорошо. Затем я наткнулся на DisplayNameResourceAttribute, возможно, это то, что я ищу. Но оно должно находиться в пространстве имен Microsoft.VisualStudio.Modeling.Design, и я не могу найти, какую ссылку я должен добавить для этого пространства имен.
Кто-нибудь знает, есть ли такое более простой способ добиться хорошей локализации DisplayName? или есть ли способ использовать то, что Microsoft, похоже, использует для Visual Studio?
Подробнее здесь:
https://stackoverflow.com/questions/356 ... eattribute