Valentin Kuzub 评论了我对 SO 问题之一的回答,他认为 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
.
您能否确认一下,或者我对方法内联的理解是错误的?