【问题标题】:What's a best practice for using dynamic type in ASP.NET MVC 4?在 ASP.NET MVC 4 中使用动态类型的最佳实践是什么?
【发布时间】:2013-05-17 07:42:03
【问题描述】:

我们知道微软很久以前就引入了动态类型。在某些情况下,我还在 ASP.NET MVC 应用程序中应用了它。但对我来说,它并不适用于所有情况。具体来说,它违反了一些基本原则,例如The Acyclic Dependencies Principle。例如,我有一个使用包 B 的包 A,然后在 B 中我使用动态和对 A 的引用。它工作正常。那么问题来了,我该如何正确使用动态类型呢?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 dynamic-typing


    【解决方案1】:

    从经验中说:不要这样做。说真的,迟早你会后悔的。 每次我决定使用动力学时,我都发现这是一个错误。使用动态使重构成为一场噩梦,并且您失去了最大的优势,即类型安全。错误将出现在运行时而不是编译期间。

    优化设计并使用 oop 原则或尝试找到一些通用接口通常会好十倍。

    它应该仅用于简化使用动态语言(如 java 脚本)。否则,这对您的程序性能和您的头脑清醒都是不利的:)

    因此,动态的最佳做法是:尽量避免使用它们

    【讨论】:

    • NancyFX 是一个非常依赖动态且运行良好的项目的完美示例。
    • 静态语言和动态语言不匹配。一些静态语言试图做它在动态语言中的样子,反之亦然。我不知道微软为什么要引入这种类型。
    • @ThangChung Dynamic 不是类型,而是关键字。
    • 哦,.NET 中的动态类型是什么?我听到一些身体调用动态对象,动态类型,...等
    【解决方案2】:

    Dynamic 不是一种类型,它是语法糖。类型是对象,但编译器会在运行时放入大量代码来检测变量的实际类型。

    当你不知道实际类型时使用它,例如在 .Net 上运行的动态语言使用。

    它可以被滥用,作为一个懒惰的快捷方式(但为此使用 var ),但在这种情况下你会受到性能损失。长话短说,当您无法通过强类型轻松解决问题时,应该使用它。

    【讨论】:

    • 动态性能损失非常小,您只会在第一次调用或缓存命中未命中时受到打击。
    • 最小与否,使用动态时我们应该注意性能损失。
    • @Mike:就像你说的,我们必须考虑我们尝试使用什么。但在某些情况下,我们有一个团队,有人这样做,有人以另一种方式使用。
    • @Phil:我认为我们必须澄清动态上下文中的动态评估。在这种情况下,实际上需要最小化内存。感谢您的良好验证
    • 如果您已经在使用动态并且有人考虑过,那么问题是什么?
    【解决方案3】:

    我认为动态关键字很好,但我们必须非常小心地使用它,就像上面提到的 Mike 一样。我在一些小例子上使用了它。当我们使用它时,我们知道它,所以当有人调用它时,他/她必须知道动态使用什么样的对象。希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-05
      • 1970-01-01
      • 2012-08-03
      • 2012-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-16
      相关资源
      最近更新 更多