【发布时间】:2013-12-14 05:42:06
【问题描述】:
我希望对 Parse 方法的以下调用返回枚举成员 EN_CA,但它返回的是 EN。
Enum.Parse(LanguageType, "EN_CA", true);
地点:
enum LanguageType
{
EN = 0,
EN_CA = 0,
FR = 1
}
Parse 方法似乎只是抓取了第一个映射到传递给它的参数值的成员。Parse 方法似乎在从字符串到枚举成员的转换过程中丢失了信息。更改 EN_CA 和 EN 的顺序将使上述调用返回 EN_CA 但这并不能解决问题,因为在调用“EN”的方法时会导致类似的问题。
其他上下文相关信息:在我的代码中,LanguageType Enum 表示字典的索引,这些索引用于本地化语言。
有没有人知道如何将两个枚举成员映射到相同的值,同时能够从 Enum.Parse 获取正确的成员?我是否只需要实现我自己的 Enum.Parse 版本,它不会将具有相同值的成员合并为一个?
【问题讨论】:
-
为什么
EN和EN_CA使用相同的值? -
整数值 0 映射到某个索引,我想让 EN 和 EN_CA 都映射到同一个索引。我的代码中的索引 0 为某些字典带来了英文翻译;所以我想让 myDictionary[LanguageType.EN] 和 myDictionary[LanguageType.EN_CA] 指向同一个东西。
-
它是有效的,但会使您的代码无法按设计运行。