Estoy tratando de usar GetCustomAttributes()
para obtener un atributo definido en una propiedad. El problema es que la propiedad está anulada y no puedo encontrar la forma de extraer la sobrescrita de la expresión. Solo puedo averiguar cómo obtener el de la clase base.Obtener el atributo de la propiedad anulada mediante un linq Expresión
Aquí hay un código
public class MyAttribute : Attribute
{
//...
}
public abstract class Text
{
public abstract string Content {get; set;}
}
public class Abstract : Text
{
[MyAttribute("Some Info")]
public override string Content {get; set;}
}
Ahora estoy tratando de conseguir el MyAttribute
fuera de la clase abstracta. Pero necesito obtenerlo a través de Expression
. Esto es lo que he estado usando:
Expression<Func<Abstract, string>> expression = c => c.Content;
Expression exp = expression.Body;
MemberInfo memberType = (exp as MemberExpression).Member;
var attrs = Attribute.GetCustomAttributes(memberType, true);
Desafortunadamente atts
termina como vacía. El problema es que menberType
termina siendo para Text.Content
en lugar de la clase Abstract.Content
. Entonces, cuando obtengo los atributos, no devuelve nada.
Gracias por el enlace a la otra pregunta. Busqué algo similar pero no encontré ese. – Jero
Esa solución que diste es el trabajo que he estado usando hasta ahora tan agradable para obtener un soporte independiente para eso :-) Gracias – Jero