1

我想要做的是翻译一个使用属性在控件中设置文本的应用程序。我正在考虑自定义资源管理器,但必须对属性进行硬编码。我的问题是:

有什么方法可以使用 PostSharp 更改属性设置的可见文本以及属性在运行时存储在哪里?

例如代码

[DataMember]
[DisplayName("Mission description")]
[Description("Description of this mission")]
public string Description { get; set; }

我想要实现的是将“任务描述”和“此任务的描述”提取到外部文件,翻译它,并在程序执行期间将新的翻译值作为属性传递给描述字符串。

4

1 回答 1

2

我要做的是创建一个继承自 System.ComponentModel.DisplayNameAttribute 的类,将其命名为“DisplayNameAttribute”以覆盖父类,并覆盖父类构造函数、“DisplayName”和“DisplayNameValue”属性。接下来,我将我的逻辑放入 DisplayNameValue getter。然后以此类推创建DescriptionAttribute 类。

public class DisplayNameAttribute : System.ComponentModel.DisplayNameAttributes
{
        private string name;

        public DisplayNameAttribute() { }
        public DisplayNameAttribute(String name) { this.name = name; }

        public override string DisplayName 
        { 
            get 
            { 
                return DisplayNameValue;
            } 
        }

        public string DisplayNameValue
        {
            get
            {
                /* e.g logic for reading from dictionary file */
                return myDictionary[name];
            }
            set
            {
                name = value;
            }
        }
    }
}

“字符串名称”是我保存字典键的地方。

于 2013-07-25T18:14:18.780 回答