作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试将字符串解析回 MyEnum 类型的可为 null 的属性。
public MyEnum? MyEnumProperty { get; set; }
我在线上遇到错误:
Enum result = Enum.Parse(t, "One") as Enum;
// Type provided must be an Enum. Parameter name: enumType
我在下面有一个示例控制台测试。如果我删除属性 MyEntity.MyEnumProperty
上的 nullable,则代码有效。
除了通过反射,我如何在不知道 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
}
}
最佳答案
为 Nullable<T>
添加一个特例将工作:
Type t = myEnumPropertyInfo.PropertyType;
if (t.GetGenericTypeDefinition() == typeof(Nullable<>))
{
t = t.GetGenericArguments().First();
}
关于c# - 解析为可空枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9764041/
我是一名优秀的程序员,十分优秀!