三种生命周期 : 范围(Scoped)、单例(Singleton)、瞬态(Transient)
1.尝试创建服务的不同生命周期
C#
//瞬态
services.AddTransient<ITestServiceIMP>();
//单例
//services.AddSingleton<ITestServiceIMP>();
//范围
//services.AddScoped<ITestServiceIMP>();
2.如果一个类实现了IDisposable接口,则离开作用域之后容器会自动调用对象的Dispose方法(方便内存管理)
3.不要在长生命周期的对象中引用对比它短的生命周期的对象在ASP.NET中这样做默认抛异常
4.生命周期的选择:如果类无状态,建议为Singleton,如果类有状态,且有Scope控制,建议为Scoped,因为通常这种Scope控制下的代码都是运行在同一个线程下的,没有并发修改的问题,在使用Transient的时候要谨慎