zoukankan      html  css  js  c++  java
  • 06-001 DependencyInjection 之 LifecycleKind

    IApplicationBuilder 里有如下一成员:

      IServiceProvider ApplicationServices { get; set; }
    

     HttpContext 里有如下两个成员:

     public abstract IServiceProvider ApplicationServices { get; set; }
     public abstract IServiceProvider RequestServices     { get; set; }
    

     IServiceProvider 的成员:

     public object GetService(Type serviceType)
    

     创建 添加 调用的简单代码如下:

                var serviceProvider = new ServiceCollection()
                    .AddTransient<IFakeService, FakeService>()
                    .AddTransient<CreationCountFakeService>()
                    .BuildServiceProvider();
    		 
    	   var IFakeService = serviceProvider.GetService(typeof(IFakeService))() as IFakeService;
    

     简单描述为:创建一个集合 ServiceCollection;向集合里添加 键值对:接口 和 接口的实现。

    集合会生成 ServiceProvider. 通过 ServiceProvider 来得到需要的对象。

    代码中的 .AddTransient 作何理解吗? 现在看一下 LifecycleKind

     public enum LifecycleKind
        {
            Singleton, //单例;单态;  只有一个示例  每次调用都返回同一个对象
            Scoped,    // 一定范围的 在一定范围内只有一个实例 如在一个请求范围内是同一个实例 不同的请求创建新对象   
    	Transient  //短暂的;转瞬即逝的;临时的 每次调用都创建一个新的对象 
        }
    
  • 相关阅读:
    团队冲刺2---个人工作总结八(6.1)
    团队冲刺2---个人工作总结七(5.31)
    opencv2 用imwrite 抽取并保存视频图像帧
    VMware 虚拟机CentOS 7 网路连接配置 无eth0简单解决办法
    个人总结
    人月神话阅读笔记03
    个人冲刺10
    人月神话阅读笔记02
    第十六周学习进度情况
    个人冲刺09
  • 原文地址:https://www.cnblogs.com/DotNet1010/p/4354107.html
Copyright © 2011-2022 走看看