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<>));

  

posted @ 2020-03-19 16:46  王立新  阅读(238)  评论(0编辑  收藏  举报