通常在C#中我们用PropertyGrid来实验属性页功能,然后定义一个类,把对象实例传给PropertyGrid的SelectedObject属性。
然后在属性类中定义各个属性之前我们加各个Attribute调用来实现属性页上内容,如下代码:
[DisplayNameAttribute(“XXX Name”)]
[DescriptionAttribute(“XXX Description”)]
[CategoryAttribute(“YYY”)]
public string Name { get {…} set{…} }
现在需要实现多语言化,但在Attribute后的括号里不能使用Resources.XXX之类的内容来实现,因为那里需要常量。
解决办法是派生这些Attribute类,重载一些函数实现:
1. DisplayNameAttribute类我们重载public virtual string DisplayName { get; }属性
2. DescriptionAttribute类我们重载public virtual string Description { get; }属性
3. CategoryAttribute类我们重载protected virtual string GetLocalizedString(string value);方法

Feed: