我見過很多關於將字符串映射到枚舉的問題和答案,反之亦然,但是如何將一系列本地化的字符串映射到枚舉?如何國際化表示C#枚舉值的字符串?
我應該只是創建一個extension method like this從資源文件返回正確的字符串?有沒有一種方法來本地化solutions like this中使用的屬性(如「描述」)?
哪一個是首選解決方案 - 擴展方法或屬性。在我看來,這不是屬性的預期目的。事實上,現在我想到了,如果我使用擴展方法,那麼屬性看起來像是我用來在資源文件中爲我想用來代替枚舉值的本地化字符串指定一個鍵。
編輯 - 例如:
考慮下面的枚舉,
public enum TransactionTypes {
Cheque = 1,
BankTransfer = 2,
CreditCard = 3
}
我想一個方法來映射每種類型的本地化字符串。我開始使用一個擴展方法來使用一個switch語句和對資源文件的強類型引用。
但是,每個枚舉的擴展方法似乎不是一個很好的解決方案。我已開始遵循this爲每個枚舉值創建一個自定義屬性。該屬性具有包含本地化字符串的資源文件的基本名稱和密鑰。在上面的枚舉,例如,我有這樣的:
...
[EnumResourceAttribute("FinancialTransaction", "Cheque")]
Cheque = 1,
...
其中「FinanacialTransaction」是的resx文件,「檢查」是字符串鍵。我試圖創建一個實用程序方法,我可以從任何枚舉中傳遞任何值,並讓它返回該值的本地化字符串表示形式,假定指定了自定義屬性。我只是無法弄清楚如何動態訪問資源文件和其中的一個關鍵。
+1我1分鐘太晚了:) – 2010-05-25 14:06:01
我本來應該更清晰 - 我不打算使用比其他任何資源文件(我們已經將它們用於需要國際化域名的其他一切)。我正在尋找將資源字符串映射到枚舉的解決方案。 – Matt 2010-05-25 14:14:55
@Duke:好的,這不是非常清楚你想要什麼 - 我已經用一個非常簡單的擴展方法更新了我的答案,但是我懷疑你是在追求更多的東西... – 2010-05-25 14:24:15