Вдохновлен таким вопросом. Класс Attribute имеет несколько перегрузок для метода IsDefined () . Покрыты атрибуты, применяемые к Assembly, Module, MemberInfo, ParameterInfo. Перегрузка MemberInfo охватывает PropertyInfo, FieldInfo, EventInfo, MethodInfo, ConstructorInfo.
Это заботится о большинстве AttributeTargets. За исключением одного важного: нет перегрузки для Attribute.IsDefined (Type, Type), чтобы вы могли проверить, определен ли атрибут в классе. Или структура, делегат или перечисление в этом отношении.
Не то чтобы это реальная проблема, Type.GetCustomAttributes () может это исправить. Но все типы BlahInfo тоже имеют это. Я удивляюсь отсутствию симметрии. Я не могу понять, почему это будет проблемой для Type. Гадание на проблему наследования не объясняет это мне. Наличие ValueType в миксе может быть лидером, но все же не имеет смысла. Я не покупаю «они забыли», они никогда не покупают.
Почему эта перегрузка отсутствует?
ICustomAttributeProvider
имеет много смысла тоже.