如何通过反射检测C# 11中的required属性?
检测C# 11 required属性的反射方法
C# 11的required关键字在编译时,会自动为目标属性添加System.Runtime.CompilerServices.RequiredMemberAttribute特性。因此通过反射检测该特性的存在,就能判断属性是否被标记为required。
直接使用PropertyInfo.IsDefined方法即可快速判断:
using System.Runtime.CompilerServices; PropertyInfo prop = typeof(Example).GetProperty("Value"); bool isRequired = prop.IsDefined(typeof(RequiredMemberAttribute));
也可以通过获取特性实例的方式验证:
using System.Runtime.CompilerServices; PropertyInfo prop = typeof(Example).GetProperty("Value"); RequiredMemberAttribute requiredAttr = prop.GetCustomAttribute<RequiredMemberAttribute>(); bool isRequired = requiredAttr != null;
需要注意,RequiredMemberAttribute属于System.Runtime.CompilerServices命名空间,使用时需确保引入该命名空间。
内容的提问来源于stack exchange,提问作者Miroslav
相关产品推荐
相关产品推荐

