Натхненний питанням SO. Клас Attribute має кілька перевантажень для методу IsDefined () . Покриті - атрибути, застосовані до збірки, модуля, MemberInfo, ParameterInfo. Перевантаження MemberInfo охоплює PropertyInfo, FieldInfo, EventInfo, MethodInfo, ConstructorInfo.
Це стосується більшості цілей AttributeTargets. За винятком однієї великої версії: для Attribute.IsDefined (Type, Type) немає перевантаження, щоб ви могли перевірити, чи визначений атрибут у класі. Або структура, делегат або переконання з цього питання.
Не те, що це справжня проблема, Type.GetCustomAttributes () може виправити це. Але у всіх типів BlahInfo є і це. Мені цікаво відсутність симетрії. Я не можу покласти пальця на те, чому це було б проблемою для типу. Вгадування проблеми спадкування мені не пояснює. Наявність ValueType у суміші може бути ведучим, але все ще не має сенсу. Я не купую "вони забули", вони ніколи не роблять.
Чому відсутня ця перевантаження?
ICustomAttributeProvider
матиме багато сенсу.