影響我的answer就因此問題之一是由瓦倫丁Kuzub,誰認爲,通過JIT編譯器內聯屬性將導致反射停止工作評價。屬性/方法內聯和反思
的情況是如下:
class Foo
{
public string Bar { get; set; }
public void Fuzz<T>(Expression<Func<T>> lambda)
{
}
}
Fuzz(x => x.Bar);
Fuzz
函數接受lambda表達式和使用反射來找到屬性。在MVC中,這是HtmlHelper
擴展中的常見做法。
我不認爲反射將停止即使Bar
屬性,都會內聯,因爲它是Bar
通話將被內聯和typeof(Foo).GetProperty("Bar")
仍然會返回一個有效的PropertyInfo
工作。
你能否確認這個,請還是我的方法內聯的理解是錯誤的?
順便說一句我發現這個有趣的文章,顯示不使用lambda在INotifyPropertyChange實現中的其他原因http://blog.quantumbitdesigns.com/2010/01/26/mvvm-lambda-vs-inotifypropertychanged-vs-dependencyobject/ –