![](/img/trans.png)
[英]What's Best way to Bind collection of Enums ( List<Enum> ) to a DropDownList?
[英]What's the best way to provide localization for Enums?
我正在编写一个使用很多枚举的多语言应用程序,我希望实现以下目标:
我热衷于使用属性+资源文件来修饰枚举,以便可以从运行时类型信息中获取本地化字符串。 在使用静态成员而不是枚举声明静态类之前,我一直沿着这条路走下去,但是这解决了很多问题。
某种基于TypeDescriptor的机制是否合适? 甚至可能吗?
此外 - 如何以干净,通用,可重复使用的方式完成目标#3?
自从提出这个问题以来,我已经完成了需要可本地化的枚举显示的开源库。 我选择了实现TypeConverters的技术。 完整资料来源于http://measures.codeplex.com/
如何为你的枚举编写TypeConvertor ?
Parse<T>(string value)
,其中T将是枚举类型。 该实现将使用反射来查找您的自定义属性(按需)构建给定枚举类型T的查找字典。 我刚刚写了另一个涉及某些东西的线程的答案。 在这里查看一些代码示例。
我认为你的方向正确 - 使用属性来装饰枚举成员。 您可能需要做的唯一想法是忘记System.ComponentModel
并设计您自己的一组属性,这些属性将尊重您的需求和整体应用程序架构。
我们使用相同的方法,它以“干净,通用,可重复使用的方式”按预期工作。 我们没有实施的唯一方面是因为我们不需要实际国际化。 但是,这只是一些需要您跟踪当前文化并决定在何处选择资源文件的机制。 基本上,您可能需要在“多个属性”(每种语言一个)或“单个属性”(一个用于封装资源文件选择的所有语言)方法之间进行选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.