C#反射-类型的GetCustomAttributes从父类获取属性

时间:2019-05-22 10:52:46

标签: c# asp.net-web-api system.reflection

假设我有两个类,基类有一个自定义属性:

[MyAttribute]
public class BaseModel
{
    public string Id { get; set; }

    public string Name { get; set; }
}

public class InheritedModel : BaseModel
{
    public string CompanyName { get; set; }

    public int Amount { get; set; }
}

当我使用继承的类时,例如

// member.DeclaringType is InheritedModel 

if (member.DeclaringType.GetCustomAttributes(typeof(MyAttribute)).Any())
{
   // returns true
}

我希望它应该是false,因为InheritedModel并没有直接的MyAttribute属性。

它是否正确?如何在上述条件下划分父母和继承人?

1 个答案:

答案 0 :(得分:2)

GetCustromAttributes有一个重载,可让您指定是否还要搜索祖先类。

它似乎默认为true(尽管在文档中没有写明),所以请尝试传递false

member.DeclaringType.GetCustomAttributes(typeof(MyAttribute), false).Any()