ASP.NET Core(一)依赖注入
什么是依赖注入
依赖注入是控制反转IOC的一种形式,意思是组件自身无须承担直接实例化其依赖项的职责。
不得不提一个场景了,当我们在某个实现类中需要使用到各个其他依赖项实例时,最常见的一种方式就是在本类中实例化依赖项,
当依赖项比较单一并不太会修改构造函数时,这样做也还好,
但是当依赖项过多,并且构造复杂,在实现类中实例化就会很难,并且代码会重复,冗长。
这时把创建和管理类的实例的职责就交给了容器,达到了解耦的目的。
还有一个优势是方便单元测试。
注入方式
1.构造函数注入
在ASP.NET Core MVC中,默认使用构造函数注入。在应用程序启动时,可以在Startup类的ConfigureService方式中注册服务。
public void ConfigureServices(IServiceCollection services) { services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer( Configuration.GetConnectionString("DefaultConnection"))); services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true) .AddEntityFrameworkStores<ApplicationDbContext>(); services.AddControllersWithViews(); services.AddRazorPages(); }
下图是容器的生命周期选择:

将服务添加到IServiceCollection之后,框架会在运行期间使用构造函数注入来连接各依赖项。控制器不再知晓如何创建这些服务以及如何管理它们的生命周期。
2.属性注入
public IActionResult Index([FromServices]ILogger<HomeController> logger) { return View(); }

浙公网安备 33010602011771号