2010-08-14 8 views
7

Gibt es eine Möglichkeit, die PropertyInfo für eine Eigenschaft von ihrem Getter bekommen? Wie folgt aus:Gibt es eine Möglichkeit, das PropertyInfo vom Getter dieser Eigenschaft abzurufen?

public object Foo 
{ 
    get 
    { 
     PropertyInfo propertyInfoForFoo = xxx; 
     ... 
    } 
} 

möchte ich hart Code zu vermeiden, den Namen der Eigenschaft als String, wie heikel ist aufrecht zu erhalten.

Ich benutze .NET 2.0, also hoffe ich auf eine linq-lose Lösung.

+0

möglich Duplikat von [Wie durch Reflexion aktuelle Eigenschaftsnamen bekommen?] (Http://stackoverflow.com/questions/1206023/how-to-get-current-property-name-via-reflection) – nawfal

Antwort

5

MethodBase.GetCurrentMethod() gibt das MethodInfo-Objekt für get_YourPropertyName zurück.

PropertyInfo property = GetType() 
          .GetProperty(MethodBase 
              .GetCurrentMethod() 
              .Name 
              .Substring("get_".Length) 
             ); 
0

Ähm ... Also, wie hast du vorgehabt, dem Getter "gegeben" zu werden?

Der einzige Weg, ich sehe, ist durch so etwas wie MyGetProperyInfo(x => x.Foo);

, die getan werden kann, obwohl es eine Lambda erfordert & eine Expression <> (von denen keiner in C# v2 verfügbar ist)

+0

Lambdas sind in C# 2 verfügbar, nur nicht in linq. Ich bin mir nicht sicher über Ausdruck <>. –

+0

@JOnB: "Ausdruck" und alle Subtypen sind in der System.Core-Assembly implementiert und wurden in .NET 3.5 hinzugefügt. – Richard

Verwandte Themen