Ispirato da una domanda SO. La classe Attribute presenta numerosi overload per il metodo IsDefined () . Sono coperti gli attributi applicati a Assembly, Module, MemberInfo, ParameterInfo. Il sovraccarico MemberInfo copre PropertyInfo, FieldInfo, EventInfo, MethodInfo, ConstructorInfo.
Questo si occupa della maggior parte degli AttributeTarget. Tranne un grosso problema: non c'è sovraccarico per Attribute.IsDefined (Type, Type) in modo da poter verificare se un attributo è definito su una classe. O una struttura, delegato o enum per quella materia.
Non che questo sia un vero problema, Type.GetCustomAttributes () può risolverlo. Ma anche tutti i tipi di BlahInfo hanno questo. Mi chiedo la mancanza di simmetria. Non riesco a capire perché questo sarebbe un problema per Type. Indovinare un problema di eredità non me lo spiega. Avere ValueType nel mix potrebbe essere un vantaggio, ma non ha ancora senso. Non compro "hanno dimenticato", non lo fanno mai.
Perché manca questo sovraccarico?
ICustomAttributeProvider
avrebbe molto senso.