我想解析一個字符串回MyEnum類型的可空屬性。解析爲可空枚舉
public MyEnum? MyEnumProperty { get; set; }
我在網上收到一個錯誤:
Enum result = Enum.Parse(t, "One") as Enum;
// Type provided must be an Enum. Parameter name: enumType
下面我有一個樣本測試控制檯。如果我在屬性MyEntity.MyEnumProperty
上刪除空值,代碼將起作用。
我怎樣才能得到的代碼工作,而不知道typeof枚舉,除了通過反射?
static void Main(string[] args)
{
MyEntity e = new MyEntity();
Type type = e.GetType();
PropertyInfo myEnumPropertyInfo = type.GetProperty("MyEnumProperty");
Type t = myEnumPropertyInfo.PropertyType;
Enum result = Enum.Parse(t, "One") as Enum;
Console.WriteLine("result != null : {0}", result != null);
Console.ReadKey();
}
public class MyEntity
{
public MyEnum? MyEnumProperty { get; set; }
}
public enum MyEnum
{
One,
Two
}
}
金!非常感謝你 – 2012-03-19 02:06:28
我知道這是從2012年開始的,但對於任何偶然發現同樣問題的人(如我) - 小改進:在t.GetGenericTypeDefinition()== ...之前添加t.IsGenericType的檢查,否則該代碼可能會因爲不可空的枚舉類型而中斷 – 2016-06-24 10:07:50