我正在编写一个使用许多枚举的多语言应用程序,我想实现以下目标:
- 将枚举名称显示为本地化字符串
- 使用属性提供本地化描述
- 启用对语言敏感的枚举解析返回 int 值
我热衷于使用属性 + 资源文件来装饰枚举,这样本地化的字符串就可以从运行时类型信息中获取。之前我一直在用静态成员而不是声明一个枚举来声明一个静态类,但这带来的问题和它解决的问题一样多。
某种基于 TypeDescriptor 的机制是否合适?甚至可能?
此外 - 如何以一种干净、通用、可重复使用的方式实现目标 3?
自问这个问题以来,我已经完成了需要可本地化枚举显示的开源库。我采用了实现 TypeConverter 的技术。完整资源可在 http://measures.codeplex.com/ 获得
最佳答案
写的怎么样TypeConvertor对于你的枚举?
- 定义一些自定义属性,为枚举值标识资源字符串。
- 编写 TypeConvertor,它将查找此属性以获取资源 ID,然后将值转换为字符串。 (您可以使用相同的辅助类,但使用 TypeConvertor 和 TypeConvertorAttribute 可以更透明地使用它)。
- 您可以编写一个通用类/方法来进行反向转换(从字符串到枚举)。该方法类似于
Parse<T>(string value)
其中 T 将是枚举类型。该实现将(按需)为给定枚举类型 T 构建一个查找字典,使用反射来查找您的自定义属性。
关于c# - 为枚举提供本地化的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3914688/