IOC服务的生命周期

三种生命周期 : 范围(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的时候要谨慎

订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
滚动至顶部