我想解析一个字符串回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