2010-08-14 41 views
7

有沒有什麼辦法可以讓PropertyInfo從它的getter獲得一個屬性?像這樣:有什麼辦法從該屬性的getter獲取PropertyInfo?

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

我想避免必須硬編碼屬性的名稱作爲字符串,因爲這很難維護。

我使用的是.NET 2.0,所以我希望有一個linq-less解決方案。

+0

的可能重複[如何獲得通過反射當前屬性的名字嗎?](http://stackoverflow.com/questions/1206023/how-to-get-current-property-name-via-reflection) – nawfal 2013-04-27 13:48:24

回答

5

MethodBase.GetCurrentMethod ()將返回get_YourPropertyName的MethodInfo對象。

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

嗯......那麼你打算如何計劃給予吸氣劑?

我看到的唯一方法是通過類似MyGetProperyInfo(x => x.Foo);

這是可以做到,但它需要一個lambda &的表達<>(兩者都沒有在C#v2是可用的)

+0

Lambda在c#2中可用,但不是linq。不確定Expression <>。 – 2010-08-14 13:55:22

+0

@JOnB:'Expression'和所有子類型都在System.Core程序集中實現,並且在.NET 3.5中添加。 – Richard 2010-08-14 14:10:37

相關問題