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();
            }
    复制代码

  • 相关阅读:
    python 连接sql server 解决中文乱码 及配置使用 web 服务使用
    Android调用.net的webservice服务器接收参数为空的情况
    好题推荐
    算法中一些trick和细节
    洛谷P2181 对角线
    新的开始
    文化课倒计时80天
    Electron-vue实现后台多进程(三. 自动化测试篇)
    工作感受月记202107月
    工作感受月记202106月
  • 原文地址:https://www.cnblogs.com/zxtceq/p/13916843.html
Copyright © 2011-2022 走看看