首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# 11 -通过反射检测所需的属性

C# 11 -通过反射检测所需的属性
EN

Stack Overflow用户
提问于 2022-11-09 08:05:06
回答 1查看 121关注 0票数 3

C# 11增加了对所需属性的支持。

代码语言:javascript
复制
public class Example
{
    public required string Value { get; set; }
}

如何检测该属性是根据反射的要求声明的?

请注意,这是一个与返回类中所有必需属性的列表。不同的问题,因为这个问题从2017年起是关于自定义属性的,这是关于required属性关键字的,这是C# 11 (2022年)中新出现的。

代码语言:javascript
复制
PropertyInfo prop = typeof(Example).GetProperty("Value");
//bool isRequired = prop ...?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-09 08:11:35

如果我们使用通过sharplab运行您的代码,我们会看到您的代码变成:

代码语言:javascript
复制
[System.Runtime.CompilerServices.NullableContext(1)]
[System.Runtime.CompilerServices.Nullable(0)]
[RequiredMember]
public class Example
{
    [CompilerGenerated]
    private string <Value>k__BackingField;

    [RequiredMember]
    public string Value
    {
        [CompilerGenerated]
        get
        {
            return <Value>k__BackingField;
        }
        [CompilerGenerated]
        set
        {
            <Value>k__BackingField = value;
        }
    }

    [Obsolete("Constructors of types with required members are not supported in this version of your compiler.", true)]
    [CompilerFeatureRequired("RequiredMembers")]
    public Example()
    {
    }
}

所以..。只需通过RequiredMemberAttribute测试属性上是否存在Attribute.IsDefined(propertyInfo, typeof(RequiredMemberAttribute))。我想您也应该在类型上测试RequiredMemberAttribute

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74371619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档