[Proposal] Helper types for metadata attributes?
От: Sinix  
Дата: 07.01.17 10:32
Оценка:
Про что речь: хелперы для поиска атрибутов в определённом порядке:
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


Собсно вопрос: оно нам надо?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.