Я ищу способ локализовать имена свойств, отображаемые в 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?