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

.NET4.8迁移.NET5双目标框架GetMember可空赋值警告解决问询

方案1:用ReSharper专用注释抑制单行警告

这是最贴合你需求的实现方式,不需要修改业务逻辑,也不会引入编译条件或空原谅运算符:
你可以直接在触发警告的代码行上方加ReSharper的抑制注释,也可以将光标移到警告高亮位置,按Alt + Enter,在弹出的操作菜单中选择「抑制警告」→「使用注释抑制」,工具会自动生成对应注释,最终代码示例如下:

// ReSharper disable once PossibleNullAssignment
var memberInfoArr = typeof(TEnum).GetMember(enumValue.ToString());

该注释仅会抑制当前行的对应ReSharper警告,不会对其他代码的分析逻辑产生任何影响。

方案2:添加空值兜底逻辑

如果不想依赖ReSharper的专用注释,可以通过空合并运算符添加兼容双框架的兜底逻辑,你这个场景下合法枚举值调用GetMember永远不会返回null,兜底逻辑不会实际执行,无额外性能损耗:

var memberInfoArr = typeof(TEnum).GetMember(enumValue.ToString()) ?? Array.Empty<MemberInfo>();

方案3:封装通用扩展方法

如果项目中多处使用GetMember方法,可以统一封装扩展方法处理可空问题,一劳永逸消除所有同类警告:

using System.Reflection;

public static class TypeExtensions
{
    public static MemberInfo[] GetMemberSafe(this Type type, string name)
    {
        return type.GetMember(name) ?? Array.Empty<MemberInfo>();
    }
}

后续调用直接替换为扩展方法即可:

var memberInfoArr = typeof(TEnum).GetMemberSafe(enumValue.ToString());

内容的提问来源于stack exchange,提问作者Michael Gabbay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:45:05