是否有可能获得Windows本地化的.NET枚举? 例如,我想获得System.IO.Ports.Parity值的翻译。
这里是System.IO.Ports.Parity:
public enum Parity { None = 0, Odd = 1, Even = 2, Mark = 3, Space = 4, }
Windows在COM端口属性窗口(我使用俄语版本的Windows 8)中显示为{“Чет”,“Нечет”,“Нет”,“Маркер”,“Пробел”}。
事情是,我不想硬编码这些“翻译”。 我想根据当前的文化自动获取它们。
不,没有本地化的枚举。
枚举的重点在于可以使用描述性名称而不是值,所以如果您将值设置为Mark
而不是3
那么当你比较价值时,你不必记得3
代表Mark
您不应该向用户显示EnumValue.ToString()
,但可以创建自己的名为strings
的资源文件,使用适当的值添加名为Mark
的资源,然后查找如下所示的值:
ResourceManager rm = strings.ResourceManager; Debug.WriteLine(rm.GetString(System.IO.Ports.Parity.Mark.ToString()));
请参阅如何在C#中使用本地化和从字符串资源动态获取字符串以获取更多信息。
但是,这确实涉及到您创建所有翻译的部分工作。