第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

DisplayNameAttribute的本地化

DisplayNameAttribute的本地化

C#
qq_笑_17 2019-10-06 13:10:11
我正在尋找一種本地化PropertyGrid中顯示的屬性名稱的方法。使用DisplayNameAttribute屬性可以將該屬性的名稱“覆蓋”。不幸的是,屬性不能具有非常量表達(dá)式。因此,我不能使用強(qiáng)類型資源,例如:class Foo{   [DisplayAttribute(Resources.MyPropertyNameLocalized)]  // do not compile   string MyProperty {get; set;}}我環(huán)顧四周,發(fā)現(xiàn)一些建議可以從DisplayNameAttribute繼承來(lái)使用資源。我最終會(huì)得到如下代碼:class Foo{   [MyLocalizedDisplayAttribute("MyPropertyNameLocalized")] // not strongly typed   string MyProperty {get; set;}}但是,我失去了強(qiáng)類型資源的好處,這絕對(duì)不是一件好事。然后我遇到了DisplayNameResourceAttribute,這可能是我想要的。但這應(yīng)該在Microsoft.VisualStudio.Modeling.Design命名空間中,而我找不到應(yīng)該為該命名空間添加的引用。有人知道是否有一種簡(jiǎn)便的方法可以很好地實(shí)現(xiàn)DisplayName本地化?或者是否可以使用Microsoft似乎在Visual Studio中使用的方式?
查看完整描述

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";

}


查看完整回答
反對(duì) 回復(fù) 2019-10-06
?
UYOU

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文件中查找命名的資源。


查看完整回答
反對(duì) 回復(fù) 2019-10-06
  • 3 回答
  • 0 關(guān)注
  • 1192 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)