依赖注入
一、为什么要实现依赖注入?
第一:可以轻松管理类之间的依赖,帮助在构建应用时遵循设计原则,确保代码的可维护性和可扩展性。
第二:ASP.NET Core 的整个架构中,依赖注入框架提供了对象创建和生命周期管理的
核心能力,各个组件相互协作,也是由依赖注入框架的能力来实现的。
二、生命周期
1.单例 Singleton
同一个类型就一个实例。
代码如下(示例):
services.AddSingleton<IService>(new ClientService());//直接注入实例
services.AddSingleton<IService, ClientServiceExt>();
2.作用域 Scoped
在同一个作用域内是同一个实例,典型的场景是EFDBContext对象。同一个作用域共用同一个DBContext对象。
代码如下(示例):
services.AddScoped<IService>(serviceProvider =>
{
return new ClientServiceExt();
});
3.瞬时(暂时) Transient
每一次获取都是不同的实例。
代码如下(示例):
services.AddTransient<ITransientService, TransientService>();
使用场景总结:
对于方法都是线程安全的类型,一般使用单例。
对于对象依赖了处理上下文,或者使用了有限资源(如数据库连接)&#