Zainspirowany pytaniem SO. Klasa Attribute ma kilka przeciążeń dla metody IsDefined () . Objęte są atrybuty zastosowane do Assembly, Module, MemberInfo, ParameterInfo. Przeciążenie MemberInfo obejmuje PropertyInfo, FieldInfo, EventInfo, MethodInfo, ConstructorInfo.
To zajmuje się większością atrybutów AttributeTargets. Z wyjątkiem jednego biggy: nie ma przeciążenia dla Attribute.IsDefined (Type, Type), dzięki czemu można sprawdzić, czy atrybut jest zdefiniowany w klasie. Lub struct, delegate lub enum w tym przypadku.
Nie żeby to był prawdziwy problem, Type.GetCustomAttributes () może to naprawić. Ale wszystkie typy BlahInfo też to mają. Zastanawiam się nad brakiem symetrii. Nie potrafię określić, dlaczego byłby to problem dla Type. Zgadywanie problemu spadkowego mi tego nie wyjaśnia. Posiadanie ValueType w miksie może być wskazówką, ale nadal nie ma sensu. Nie kupuję „zapomnieli”, oni nigdy tego nie robią.
Dlaczego brakuje tego przeciążenia?
ICustomAttributeProvider
miałoby sens.