有没有一种方法可以在运行时使用postsharp更改属性
本文关键字:运行时 postsharp 属性 一种 方法 有没有 | 更新日期: 2023-09-27 18:21:34
我想做的是翻译一个使用属性设置控件中文本的应用程序。我在考虑自定义资源管理器,但属性必须是硬编码的。我的问题是:
是否有任何方法可以使用PostSharp更改由属性设置的可见文本?运行时属性存储在哪里?
例如,对于代码
[DataMember]
[DisplayName("Mission description")]
[Description("Description of this mission")]
public string Description { get; set; }
我想实现的是将"任务描述"answers"本任务描述"提取到外部文件中,进行翻译,并在程序执行期间将新翻译的值作为属性传递给描述字符串。
我要做的是创建一个从System.ComponentModel.DisplayNameAttribute继承的类,将其命名为"DisplayNameAttribute"以覆盖父类,并覆盖父类构造函数、"DisplayName"answers"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;
}
}
}
}
其中"字符串名称"是我持有字典密钥的位置。