gpt4 book ai didi

c# - 解析为可空枚举

转载 作者:可可西里 更新时间:2023-11-01 09:03:16 27 4
gpt4 key购买 nike

我正在尝试将字符串解析回 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com