AspNet Core 核心 通过依赖注入(注入服务)

说起依赖注入 相信大家已经很熟悉了,这里我在简要的描述一遍,

 

什么是依赖注入:

       我们从字面意义上来解释一下:依赖代表着两个或者多个对象之间存在某些特定的联系:举一个不是很恰当的例子

                         比如说一度夫妻组成的家庭里没有儿女,咱们暂且把这个家庭当做是一个对象(家),但是他们想要领养一个儿女怎么办,他们想通过福利院去找到这个合适的家庭成员,最终家庭里添加了一位新成员,这里福利院的角色咱们就称为注入者,添加的这个成员的动作就称为注入(DI)。 注入方式有很多,举一个简单的代码例子:

       这是一个构造器注入的例子

 

/// <summary>
        /// 家庭对象
        /// </summary>
        public class family
        {
            /// <summary>
            /// 成员
            /// </summary>
            public string member { get; set; } 
            //构造函数
            public family(string Value ) 
            {
                member = Value;
            }
        }

 

 调用代码 如下

 

 Console.WriteLine("********************构造器注入******************");
            family family = new family("儿子");
            string ReturnValue=  family.member;
            Console.WriteLine(ReturnValue);
            Console.WriteLine("********************构造器注入******************");

 

输出结果:

 

方式有很多种网上资料还是很多的:

回到AspNetCore核心的依赖注入:

     为什么说起这个:因为在Core Web程序启动的过程中,是通过Core的启动类Starup 中注册的 配置/和服务 辅助运行。Starup 中配置/和服务就是通过依赖注入注入进去的。

        注册MVC服务
        这是框架自动生成后的
        public void ConfigureServices(IServiceCollection services)

        {

            services.AddMvc();

        }

 

   自定义自己的服务
    public void ConfigureServices(IServiceCollection services)
        {
//增加自己的EF服务 并连接 数据库 services.AddEntityFrameworkSqlServer().AddDbContext
<EFDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SqlServer")));
//增加自己的EF 服务用来记录Log services.AddEntityFrameworkSqlServer().AddDbContext
<EFLogDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SqlServerLog"))); }

解决方案自动生成的 IOC容器,返回值为 void    如果想引入第三方容器的话需要更改此类的返回值, 返回值需要更改为 IServiceProvider  此接口只有一个方法

   第三方没有用过就不写出来误导人了基本代码如下:

    public IServiceProvider ConfigureServices(IServiceCollection services)
        {
            
            services.AddMvc();
//在这里写第三方容器
        }

也可以在这这地方里注入第三方容器

 public IActionResult Index()
        {
          
            //RequestServices  获取或设置系统。提供对请求的访问的iServiceProvider服务容器。
            this.HttpContext.RequestServices.GetService();
        
            return View();
        }

 

posted @ 2018-01-12 18:55  乐途  阅读(513)  评论(5编辑  收藏  举报