with net method español create c# .net reflection

c# - net - ¿Por qué Attributes.IsDefined() falta sobrecargas?



reflection c# español (1)

Inspirado por una pregunta SO. La clase Attribute tiene varias sobrecargas para el método IsDefined() . Cubiertos son los atributos aplicados a Assembly, Module, MemberInfo, ParameterInfo. La sobrecarga de MemberInfo cubre PropertyInfo, FieldInfo, EventInfo, MethodInfo, ConstructorInfo.

Eso se ocupa de la mayoría de los AttributeTargets. Excepto por un biggy: no hay sobrecarga para Attribute.IsDefined (Type, Type) para que pueda verificar si un atributo está definido en una clase. O una estructura, delegado o enum para ese asunto.

No es que esto sea un problema real, Type.GetCustomAttributes () puede arreglar eso. Pero todos los tipos de BlahInfo tienen esto también. Me pregunto por la falta de simetría. No puedo señalar por qué esto sería un problema para Type. Adivinar un problema de herencia no me lo explica. Tener ValueType en la mezcla podría ser una ventaja, todavía no tiene sentido. No compro "se olvidaron", nunca lo hacen.

¿Por qué falta esta sobrecarga?


Hay un System.Attribute.IsDefined(MemberInfo element, Type attributeType, bool inherit) y System.Type deriva de System.Reflection.MemberInfo .

Un ensamblaje, que es el contenedor de nivel superior de cualquier ensamblado .NET, tiene uno o más módulos. Cada módulo contiene tipos y tipos que pueden tener miembros como propiedades, métodos o incluso otros tipos (tipos anidados). Es por eso que System.Type deriva de MemberInfo por lo que el modelo de objetos permite que los tipos funcionen como contenedores como elementos de todo, incluidos otros tipos.