ASP.NET Core学习(二):依赖注入
通过依赖注入框架,注入对象,有三种生命周期:
1.单例:整个根容器的生命周期内,对象都是同一个
2.作用域:在容器的生存周期内,或者子容器的生存周期内,如果容器释放,对象也会释放,在这个周期内得到的是一个不变的对象(单例)
3.瞬时(立即):每一次从容器中获取对象时,都会得到一个新的对象
单例和作用域模式的区别就是,一个是全局的一个是范围的,注入实例的方式:
services.AddScoped<IMyScopedService, MyScopedService>(); services.AddSingleton<IMySingletonService, MySingletonService>(); services.AddTransient<IMyTransientService, MyTransientService>(); //花式注册 services.AddSingleton<IOrderService>(new OrderService()); //services.AddSingleton<IOrderService, OrderServiceEx>(); services.AddSingleton<IOrderService>(serviceProvider => { return new OrderServiceEx(); }); //尝试注册: 如果注册过就不会再注册 services.TryAddSingleton<IOrderService, OrderServiceEx>(); ///如果存在相同的注册实例则不再注册,不相同则注册 services.TryAddEnumerable(ServiceDescriptor.Singleton<IOrderService, OrderServiceEx>()); //移除和替换注册 services.Replace(ServiceDescriptor.Singleton<IOrderService, OrderServiceEx>()); services.RemoveAll<IOrderService>(); //注册泛型模板 services.AddSingleton(typeof(IGenericService<>), typeof(GenericService<>));