2010-04-28 42 views
2

是否有一種簡單的方法可以在委託中爲屬性獲取PropertyInfo,假設它是一個簡單的屬性seletor?來自代理的PropertyInfo

例子:

var propertyInfo = Method<MyClass,int>(s => s.Property); 

... 

PropertyInfo Method(Func<T1,T2> selector) 
{ 
    // What goes here? 
} 

回答

8

使用表達式,您可以:

static PropertyInfo ExtractProperty<T>(Expression<Func<T>> selector) 
    { 
     return (selector.Body as MemberExpression).Member as PropertyInfo; 
    } 
+0

燁,必須是一個表達式樹,而不是委託 – 2010-04-28 01:14:45

+0

我還沒有考慮這一點,謝謝! – Paul 2010-04-28 01:23:05