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();
Dependency Injection顾名思义就是依赖注入。它没有提及任何有关初始化的内容。例如,如果您要注入单例依赖项,那么它可以在注入之前很久就被初始化。
您的第一个代码是通过构造函数进行通常的依赖注入。您的第二个代码不是依赖注入。实际上,这对我来说看起来很奇怪 - 要么你试图创建接口实例,这是不可能的,要么你在这里有错误的命名。如果只是错误的命名或拼写错误,那么第二个示例应该如下所示:
public IMyService iMyService = new MyServiceImplementation();
Run Code Online (Sandbox Code Playgroud)
但你没有在这里注入任何东西。您只需创建依赖项实例(这使您的控制器与依赖项实现耦合)。