依赖注入初始化

sti*_*ink 5 c# asp.net-mvc dependency-injection inversion-of-control

请注意:我刚刚开始使用 AutoFac 来了解 DI 和 IoC。

是否应该在控制器构造函数中初始化依赖注入?

这怎么样?

private IMyService iMyService;
public HomeController(IMyServices myService)
{
    iMyService = myService;
}
Run Code Online (Sandbox Code Playgroud)

不同于...

public IMyService iMyService = new MyService();
Run Code Online (Sandbox Code Playgroud)

最后,似乎依赖关系仍然存在。

编辑:修正错字,新的 MyService(); 是新的 IMyService();

Ser*_*kiy 4

Dependency Injection顾名思义就是依赖注入。它没有提及任何有关初始化的内容。例如,如果您要注入单例依赖项,那么它可以在注入之前很久就被初始化。

您的第一个代码是通过构造函数进行通常的依赖注入。您的第二个代码不是依赖注入。实际上,这对我来说看起来很奇怪 - 要么你试图创建接口实例,这是不可能的,要么你在这里有错误的命名。如果只是错误的命名或拼写错误,那么第二个示例应该如下所示:

 public IMyService iMyService = new MyServiceImplementation();
Run Code Online (Sandbox Code Playgroud)

但你没有在这里注入任何东西。您只需创建依赖项实例(这使您的控制器与依赖项实现耦合)。