IOC 又叫控制反转。先来展示一下什么叫正转。例如
private IUserService<ApplicationUser> _UserService; public UsersController() { _UserService= new UserService() }
反转的思想不关注上端的创建。只关注对象的使用
private IUserService<ApplicationUser> _UserService; public UsersController(UserService userservice) { _UserService= userservice; }
DI依赖注入。具体是把创建对象的工作通过第三方容器来执行达到项目的高内聚低耦合。
常用的第三方容器有Untity,AutoFuc等。Untity容器可以通过配置文件的形式创建对象依赖以及AOP编程思想。
使用IOC容器之前:
使用IOC容器后:
从图1可以看出,A,B,C,D对象一个改变其他都需要运转,图二各个对象都依赖于第三方构造容器。
实现:
使用Untity需要在程序包管理器中:Install-package Unity