如何判断C#引用类型是否为可空引用类型?求官方替代方案
官方解决方案:使用
NullabilityInfoContext 你可以使用.NET 5及以后版本提供的System.Reflection.NullabilityInfoContext类,这是官方专门用于检测类型可空性的API,无需硬编码属性名称,更可靠且符合框架规范。
改造后的检查逻辑示例:
using System.Reflection; var context = new NullabilityInfoContext(); var properties = typeof(TestClass).GetProperties(); foreach (var property in properties) { var nullabilityInfo = context.Create(property); bool isNullable = nullabilityInfo.ReadState is NullabilityState.Nullable; Console.WriteLine("Property: {0}, IsNullable: {1}", property.Name, isNullable); }
输出结果和之前一致:
Property: NotNullable, IsNullable: False Property: Nullable, IsNullable: True
补充说明:
NullabilityInfoContext会自动解析编译时的可空注解信息,包括引用类型的?标记和Nullable上下文设置,比手动检查属性更准确。- 对于嵌套类型、泛型参数等复杂场景,这个API也能正确处理可空性,非常适合反序列化后批量验证非可空成员的场景。
内容的提问来源于stack exchange,提问作者Marcus Kaseder
相关产品推荐
相关产品推荐

