【发布时间】:2010-05-25 14:02:21
【问题描述】:
我已经看到很多关于将字符串映射到枚举以及反之亦然的问题和答案,但是如何将一系列本地化字符串映射到枚举?
我应该只创建一个从资源文件返回正确字符串的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 文件,“Cheque”是字符串键。我正在尝试创建一个实用程序方法,我可以将任何枚举中的任何值传递给该方法,并让它返回该值的本地化字符串表示形式,假设指定了自定义属性。我只是不知道如何动态访问资源文件和其中的键。
【问题讨论】:
标签: c# enums attributes string internationalization