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();
            }
  • 相关阅读:
    基于ASP.NET的comet简单实现
    常用的富文本框插件FreeTextBox、CuteEditor、CKEditor、FCKEditor、TinyMCE、KindEditor ;和CKEditor实例
    关于Application.Lock和Lock(obj)
    asp.net 母版页使用详解--转
    ASP.NET 全局变量和页面间传值方法
    黑帽大会2014:10个酷炫的黑客工具
    python之高性能网络编程并发框架eventlet实例
    eCos中的线程与同步
    Ubuntu12.04 下修改Apache端口号
    PHP 之mysql空字符串问题
  • 原文地址:https://www.cnblogs.com/szlblog/p/8277311.html
Copyright © 2011-2022 走看看