zoukankan      html  css  js  c++  java
  • 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();
            }
    复制代码

  • 相关阅读:
    【算法习题】青蛙跳台阶
    【转】从PowerDesigner概念设计模型(CDM)中的3种实体关系说起
    redis常用链接
    读书笔记——《redis入门指南(第2版)》第四章 进阶——4.1-5
    查询linux计算机的出口ip
    读书笔记——《redis入门指南(第2版)》第三章 入门
    vmware中的linux虚拟机配置以nat模式上网,并用xshell连接该虚拟机
    每日代码系列(1)
    第一次尝试自己编写
    原型模式
  • 原文地址:https://www.cnblogs.com/zxtceq/p/13916843.html
Copyright © 2011-2022 走看看