Отражение C # - GetCustomAttributes для Типа получает атрибут из родительского класса - PullRequest
0 голосов
/ 22 мая 2019

Допустим, у меня есть два класса, у базового класса есть собственный атрибут:

[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 Ответ

2 голосов
/ 22 мая 2019

GetCustromAttributes имеет перегрузку, которая позволяет вам указать, хотите ли вы также искать классы-предки.

Кажется, что по умолчанию true (хотя это не сказано вдокументы), поэтому попробуйте передать false

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