3 回答

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個(gè)贊
我們?yōu)樵S多屬性執(zhí)行此操作,以支持多種語(yǔ)言。我們對(duì)Microsoft采取了類似的方法,即它們覆蓋其基本屬性并傳遞資源名稱而不是實(shí)際字符串。然后,該資源名稱用于在DLL資源中執(zhí)行查找,以返回實(shí)際的字符串。
例如:
class LocalizedDisplayNameAttribute : DisplayNameAttribute
{
private readonly string resourceName;
public LocalizedDisplayNameAttribute(string resourceName)
: base()
{
this.resourceName = resourceName;
}
public override string DisplayName
{
get
{
return Resources.ResourceManager.GetString(this.resourceName);
}
}
}
在實(shí)際使用屬性時(shí),您可以更進(jìn)一步,并在靜態(tài)類中將資源名稱指定為常量。這樣,您將獲得類似的聲明。
[LocalizedDisplayName(ResourceStrings.MyPropertyName)]
public string MyProperty
{
get
{
...
}
}
更新
ResourceStrings看起來(lái)像(注意,每個(gè)字符串將引用指定實(shí)際字符串的資源名稱):
public static class ResourceStrings
{
public const string ForegroundColorDisplayName="ForegroundColorDisplayName";
public const string FontSizeDisplayName="FontSizeDisplayName";
}

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊
.NET 4中有System.ComponentModel.DataAnnotations 的Display屬性。它在MVC 3上有效PropertyGrid。
[Display(ResourceType = typeof(MyResources), Name = "UserName")]
public string UserName { get; set; }
這將UserName在您的MyResources.resx文件中查找命名的資源。
- 3 回答
- 0 關(guān)注
- 1192 瀏覽
添加回答
舉報(bào)