我正在嘗試修復代碼中的崩潰。Enum.IsDefined無法識別有效的枚舉值
Enum.IsDefined
返回 「假」,在這個方法時,它會檢查Item49
public static VocabularyEnum Status(Status currentStatus)
{
if (Enum.IsDefined(typeof(VocabularyEnum), (VocabularyEnum)currentStatus))
return (VocabularyEnum)currentStatus;
else
throw new ArgumentOutOfRangeException("currentStatus");
}
這裏是自動生成的詞彙辭典enum
:
[System.CodeDom.Compiler.GeneratedCodeAttribute("cxsc", "0.57.0.0")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlTypeAttribute(TypeName="voc.Status",
Namespace="http://somenamespace/opennamespace")]
public enum VocabularyEnum
{
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("1")]
Item1,
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("2")]
Item2,
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("3")]
Item3,
<...>
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("49")]
Item49,
}
if (Enum.IsDefined(typeof(VocabularyEnum), (int)currentStatus))
這裏是我的enum
:
public enum Status : byte
{
[Description("Description for item1")]
ReadableNameOne = 1,
[Description("Description for item2")]
ReadableNameTwo = 2,
[Description("Description for item3")]
ReadableNameThree = 3,
<...>
[Description("Description for item49")]
ReadableNameFourtyNine = 49
}
我很困惑它爲什麼這樣做。有誰知道爲什麼會這樣做和/或如何解決這個問題?
這是什麼意思?什麼是錯誤信息? – 2014-11-14 16:06:59
@ArsenMkrt通過「失敗」OP顯然意味着拋出的異常。 – BartoszKP 2014-11-14 16:07:25
你能在調試器中確認'(int)currentStatus == 49'和那個'(int)VocabularyEnum.Item49 == 49'嗎? – 2014-11-14 16:08:24