You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用反射将整数赋值给C#可空枚举属性时遭遇类型转换异常的解决方案咨询

使用反射将整数赋值给C#可空枚举属性时遭遇类型转换异常的解决方案咨询

我最近在写C#代码时碰到了一个棘手的问题:当我通过反射操作一个可空枚举类型的属性,尝试把整数赋值给它的时候,直接抛出了类型转换的异常。

下面是我复现这个问题的完整代码:

using System;
using System.Reflection;

public enum MyEnum
{
    Value1,
    Value2,
}

public class MyClass
{
    public MyEnum? MyEnumValue { get; set; }
}

public class Program
{
    public static void Main()
    {
        PropertyInfo enumProperty = typeof(MyClass).GetProperty("MyEnumValue");
        MyClass myInstance = new();

        enumProperty.SetValue(myInstance, 1);
    }
}

运行这段代码后,我收到的错误信息如下:

System.ArgumentException: Object of type 'System.Int32' cannot be converted to type 'System.Nullable`1[MyEnum]'.

有意思的是,如果把MyEnumValue改成非可空的枚举类型,这段代码就能正常执行,但我的业务场景需要支持可空枚举,所以想请教各位,这种情况下该怎么正确地用反射把整数赋值给可空枚举属性呢?

备注:内容来源于stack exchange,提问作者Hugh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 11:05:28