我们为EDI Fields提供了一个很大的Enum类,只是举一个简短的例子,枚举声明如下:
[Description("Ebene")]
Ebene,
[Description("Zaehlpunktdaten")]
Zaehlpunktdaten,
[Description("Zaehlpunkt")]
Zaehlpunkt,
。
嗯,当你通过EDIEnums.Zaehlpunktdaten.ToString()
检索枚举时,枚举工作正常,但在其他一些项目中,它会返回错误的值。
如果我在开头添加一个新内容将完全返回下一个,在此示例中,如果我刚添加Ebene
并且我想要检索Zaehlpunktdaten
,则会返回Zaehlpunkt
1}}。
我们也尝试使用=0
,=1
,=2
等,但它也不起作用。还有本地参考。
有关正在发生的事情的任何想法?
答案 0 :(得分:1)
假设程序集A定义MyEnum
。
默认情况下,每个枚举值都隐式赋值为整数“索引”,如下所示:
public enum MyEnum
{
X = 1,
Y = 2,
Z = 3
}
如果程序集B中的源代码使用MyEnum.Y
,则将根据索引2处的值编译该代码。
如果您现在在开头添加新项目,则索引将移位:
public enum MyEnum
{
New = 1,
X = 2,
Y = 3,
Z = 4
}
程序集B仍在引用索引2处的值,现在是X
而不是Y
。这是你看到的错误。
这就是为什么添加新的枚举值被认为是一个重大变化。
如果您希望枚举更改,您应该自己编号枚举值,而不是在编译程序集B之前使用隐式编号。
您现在有两个选择: