MVC 6依赖注入——用还是不用



我正在开发MVC 6中的一个简单项目,有点困惑是否使用DI。

我有一个视图,post到一个动作- AddData()。现在,在AddData()操作中,我实例化了两个类,比如Class1和Class2,然后调用它们的方法来完成工作。

现在我的困惑是-在MVC 5中,我曾经在动作中创建Class1和Class2的本地实例,然后调用它们的方法。这是没有任何DI。

在MVC 6我需要DI Class1和Class2在控制器?它们只在AddData()操作中需要。那么这种情况是适合DI还是适合传统的本地对象呢?

请澄清。

依赖注入是开发人员工具箱中的一个工具,应该在需要时使用。它将允许你遵循像SOLID这样的原则,这将使你的应用程序设计得更好,如果你计划做单元测试,它将是无价的帮助。

依我之见,依赖注入现在是完全的,这是一件伟大的事情集成在整个ASP 5管道中。这样,无论何时你需要它时,您就不必与框架作斗争了代码已经在那里了

但事实上,你现在可以使用它,并不意味着你应该总是使用它。运用你的判断力!
  • 如果你正在编写一些一次性代码或一个非常简单的应用程序,并且你真的认为依赖注入是多余的,那么不要使用它。但至少你做了一个有意识的决定!

当然,应用DI越容易,就越有可能在简单的项目或一次性代码中使用它。

最好这样做,以便在您稍后想要测试您的应用程序的情况下,您可以替换为mock,例如。然而,如果你不关心测试,或者如果应用程序真的很简单,那么我不认为有什么理由反对在控制器中实例化它们。

在不知道"Class1"one_answers"Class2"的用途的情况下,这个问题无法真正得到回答。

  • 如果它们是模型,那么不,你不会使用DI。

  • 如果是服务/实用程序,那么最好使用DI。

然而,MVC5和MVC6之间的DI架构没有区别,所以如果你没有在MVC5中使用DI,那么当你移动到MVC6时,没有理由突然需要,除非你想改进你的实践。

请注意,有一些"简单"的IoC/DI框架使这变得非常容易,你可以总是使用"穷人的DI",你有一个带类的构造函数和一个没有的,例如:

public Controller1() 
{
    this.class1 = new Class1();
}
public Controller1(Class1 class1)
{
    this.class1 = class1;
}

(许多人不赞成这样做,但这是一个选项)

最新更新