Про что речь: хелперы для поиска атрибутов в определённом порядке:
1. метод / свойство / событие, затем базовые методы (если метод виртуальный)
2. тип, в котором объявлен метод + базовые типы для него
3. container types + базовые типы для них (если тип из п.2 — nested type)
4. сборка, в которой объявлен тип из п.2.
Зачем надо: позволяет малой кровью создавать очень гибкие системы настроек на атрибутах с учётом приоритета атрибутов (порядок атрибутов, возвращаемых reflection api не документирован, если что).
Пример использования: документация, весь код для этой фичи:
foreach (var featureAttribute in metadataSource
.GetMetadataAttributes<CompetitionFeaturesAttribute>()
.Reverse())
{
competitionFeatures.Apply(featureAttribute.GetFeatures());
}
Пример получения атрибутов в коде:
var attributes = method.GetMetadataAttributes<ISomeInterface>(); // all attributes that implement the interface, including attributes in parent types / container types / assembly
var att2 = type.GetMetadataAttributes<ResourceFileAttribute>(); // ResourceFileAttribute attributes, including attributes in container types / assembly
var att3 = assembly.GetMetadataAttributes<ResourceFileAttribute>(); // ResourceFileAttribute attributes for the assembly
Собсно вопрос: оно нам надо?