Ich versuche GetCustomAttributes()
zu verwenden, um ein Attribut zu erhalten, das auf einer Eigenschaft definiert ist. Das Problem ist, dass die Eigenschaft eine überschriebene ist und ich nicht herausfinden kann, wie man die überschriebene aus dem Ausdruck extrahiert. Ich kann nur herausfinden, wie man die Basisklasse bekommt.Das Attribut von der überschriebenen Eigenschaft über einen linq erhalten Ausdruck
Hier einige Code
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;}
}
Jetzt versuche ich, die MyAttribute
aus der abstrakten Klasse zu erhalten. Aber ich muss es über eine Expression
bekommen. Das ist, was ich mit worden:
Expression<Func<Abstract, string>> expression = c => c.Content;
Expression exp = expression.Body;
MemberInfo memberType = (exp as MemberExpression).Member;
var attrs = Attribute.GetCustomAttributes(memberType, true);
Leider atts
endet als leer oben. Das Problem ist, dass menberType
für Text.Content
anstelle der Abstract.Content
Klasse endet. Wenn ich also die Attribute bekomme, gibt es nichts zurück.
Danke für den Link zu der anderen Frage. Ich suchte nach etwas ähnlichem, fand das aber nicht. – Jero
Diese Lösung, die du mir gegeben hast, ist die Arbeit, die ich bisher benutzt habe. So schön, dass ich eine unabhängige Unterstützung dafür bekomme :-) Danke – Jero