Val*_*mas 10 .net c# reflection enums nullable
我试图将字符串解析回MyEnum类型的可空属性.
public MyEnum? MyEnumProperty { get; set; }
Run Code Online (Sandbox Code Playgroud)
我在网上收到错误:
Enum result = Enum.Parse(t, "One") as Enum;
// Type provided must be an Enum. Parameter name: enumType
Run Code Online (Sandbox Code Playgroud)
我在下面有一个示例控制台测试.如果我删除属性上的nullable代码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
}
}
Run Code Online (Sandbox Code Playgroud)
Mat*_*ton 15
添加一个特殊情况Nullable<T>将工作:
Type t = myEnumPropertyInfo.PropertyType;
if (t.GetGenericTypeDefinition() == typeof(Nullable<>))
{
t = t.GetGenericArguments().First();
}
Run Code Online (Sandbox Code Playgroud)