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

C# Reflection - GetCustomAttributes for Type gets attribute from parent class

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

[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; }
}

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

// member.DeclaringType is InheritedModel 

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

我希望这应该是 false 因为 InheritedModel 没有直接 MyAttribute 属性。

它是正确的行为吗? parents 和上述条件的继承人如何划分?

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

它似乎默认为 true(虽然它在文档中没有说明)所以尝试传递 false

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