Par*_*rma 6 reflection asp.net-mvc lambda
现在与Asp.Net MVC合作已经有一段时间了,但是我遇到了一个非常奇怪的问题.每次我创建一个模型时,我都会使用lambda表达式,如:
@Html.EditorFor(model=>model.SomeProperty)
Run Code Online (Sandbox Code Playgroud)
为什么Asp.Net MVC使用这种类型的架构?
为什么我不能用反射传递属性?
是否更快地使用lambda表达式?因为在引擎盖下我认为要获得属性名称必须使用反射.
Lambda>反思
使用lambdas你得到:
感谢lambda,任何API都可以从属性选择器中了解很多东西:
另外,检查方法签名(http://msdn.microsoft.com/en-us/library/ee402949(v=vs.108).aspx):
public static MvcHtmlString EditorFor<TModel, TValue>(
this HtmlHelper<TModel> html,
Expression<Func<TModel, TValue>> expression
)
Run Code Online (Sandbox Code Playgroud)
它是表达式树而不是常规lambda.这允许MVC(以及任何API)操纵表达式,以便在运行时调用它之前添加更多行为,而不会发生反射.
详细了解表达式树:
| 归档时间: |
|
| 查看次数: |
1226 次 |
| 最近记录: |