加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 为什么在ASP.NET MVC中使用lambdas而不是反射?

发布时间:2020-12-15 20:30:01 所属栏目:asp.Net 来源:网络整理
导读:现在与Asp.Net MVC合作已经有一段时间了,但是我遇到了一个非常奇怪的问题.每次我创建一个模型时,我都会使用lambda表达式,如: @Html.EditorFor(model=model.SomeProperty) 为什么Asp.Net MVC使用这种类型的架构? 为什么我不能用反射传递属性? 是否更快地使
现在与Asp.Net MVC合作已经有一段时间了,但是我遇到了一个非常奇怪的问题.每次我创建一个模型时,我都会使用lambda表达式,如:
@Html.EditorFor(model=>model.SomeProperty)

为什么Asp.Net MVC使用这种类型的架构?

为什么我不能用反射传递属性?

是否更快地使用lambda表达式?因为在引擎盖下我认为要获得属性名称必须使用反射.

解决方法

Lambda>反射

使用lambdas你得到:

>设计时,强类型属性选择器.
>使用内置的Visual Studio重构工具轻松进行重构.

感谢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
)

它是表达式树而不是常规lambda.这允许MVC(以及任何API)操纵表达式,以便在运行时调用它之前添加更多行为,而不会发生反射.

详细了解表达式树:

> http://msdn.microsoft.com/en-us/library/bb397951.aspx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读