我在stackoverflow的一个问题中回答时,Valentin 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
。
请确认一下,或者我的方法内联理解有误吗?