获取.NET枚举的Windows本地化

是否有可能获得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#中使用本地化和从字符串资源动态获取字符串以获取更多信息。

但是,这确实涉及到您创建所有翻译的部分工作。