gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 14:02:55 25 4
gpt4 key购买 nike

使用 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
  • 关于asp.net-mvc - 为什么在 ASP.NET MVC 中使用 lambdas 而不是反射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14768808/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com