获取.net枚举的Windows本地化

本文关键字:Windows 本地化 枚举 net 获取 | 更新日期: 2023-09-27 18:05:23

是否可以为。net枚举获得Windows本地化?例如,我想获得system . io . ports .奇偶校验值的翻译。

这里是System.IO.Ports.Parity:

public enum Parity
{
    None = 0,
    Odd = 1,
    Even = 2,
    Mark = 3,
    Space = 4,
}

窗口显示他们是{"Чет"、"Нечет"、"Нет"、"Маркер"、"Пробел"}在com端口属性窗口(我使用俄罗斯版本的Windows 8)。

问题是,我不想硬编码这些"翻译"。我想根据当前文化自动获取。

获取.net枚举的Windows本地化

不,枚举没有本地化。

枚举的全部意义在于您可以使用描述性名称而不是值,因此如果您将值设置为Mark而不是3,则更容易编写代码

那么当你比较数值时,你不必记住3代表Mark

您不应该向用户显示EnumValue.ToString(),但是您可以创建自己的名为strings的资源文件,添加一个名为Mark的资源,并使用适当的值,然后像这样查找值:

ResourceManager rm = strings.ResourceManager;
Debug.WriteLine(rm.GetString(System.IO.Ports.Parity.Mark.ToString()));

参见如何在c#中使用本地化和从字符串资源中动态获取字符串了解更多信息。