首页 > 其他分享 >IOC 生命周期和释放

IOC 生命周期和释放

时间:2022-10-10 22:22:55浏览次数:54  
标签:释放 生命周期 sp GetService sc Base var IOC public

使用ServiceCollection 注入AddTransient,AddScoped,AddSingleton  三不同生命周期的的对象

Transient 最先释放

Scope 随后 

Singleton  最后

using (var sc = new ServiceCollection()
    .AddScoped<IA, A>()
    .AddSingleton<IB, B>()
    .AddTransient<IC, C>()
    .BuildServiceProvider()

    )
{

    //var Obja = sc.GetService<IA>()!;
    //var Objb = sc.GetService<IB>()!;
    //var Objc = sc.GetService<IC>()!;
    //sc.AddScoped<IA, A>();
    //sc.AddSingleton<IB, B>();
    //sc.AddTransient<IC, C>();
    using (var cs = sc.CreateScope()) //创建服务)
{
        
     var sp=   cs.ServiceProvider;
    //  A Obja = (A)sp.GetService<IA>()!;
    var ChildObja = sp.GetService<IA>()!;
    var ChildObjb = sp.GetService<IB>()!;
    var ChildObjc = sp.GetService<IC>()!;
   // Obja.run();
    Console.WriteLine();
}
}
public class Base : IDisposable
{
    public Base() => Console.WriteLine($" 对象已 {GetType().Name} 创建");
    public void Dispose() => Console.WriteLine($" 对象已 {GetType().Name} 释放.");
}

public interface IA { }
public interface IB { }
public interface IC { }

public class A: Base,IA, IDisposable
{
    public void run() => Console.Write($"{GetType().Name} 运行啦");
}

public class B: Base,IB, IDisposable { }
public class C : Base, IC, IDisposable { }

  

标签:释放,生命周期,sp,GetService,sc,Base,var,IOC,public
From: https://www.cnblogs.com/liujian1368928/p/16777642.html

相关文章

  • vue在nuxt中生命周期的正确使用
    常规理解,vue中的created和beforeCreate都是在页面未生成之前调用的,如果在这期间去调用接口处理数据,在nuxt中其实也会运行这两个生命周期,会导致服务端去追踪数据的时候发现......
  • 006 组件的生命周期
    [A]生命周期1.React中提供了一下钩子函数,也叫生命周期函数2.这些钩子函数与render方法并列(render也属于一种生命周期函数·),直接写成xxx(){}形式即可 ......
  • 父子组件的生命周期(执行顺序)
    结合父子组件之后,一个完整的父子组件生命周期:父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounte......
  • React生命周期深度完全解读
    在React中,对于每一次由状态改变导致页面视图的改变,都会经历两个阶段:render阶段、commit阶段。只有class组件才有生命周期,因为class组件会创建对应的实例,而函数组......
  • 【SSM】学习笔记(一)—— Spring 概念、Spring IoC、Spring Bean相关知识、依赖注入、
    原视频:https://www.bilibili.com/video/BV1Fi4y1S7ix?p=1P1~P27目录一、Spring概述1.1、Spring家族1.2、Spring发展史1.3、SpringFramework系统架构图1.4、......
  • Spring 深入——IoC 容器 01
    IoC容器的实现学习——01目录IoC容器的实现学习——01简介IoC容器系列的设计与实现:BeanFactory和ApplicationContextBeanFactoryloadBeanDefinition()ApplicationConte......
  • Rust实现简单的IOC容器
    usestd::{any::{Any,TypeId},collections::HashMap};useonce_cell::sync::Lazy;usestd::sync::Mutex;staticIOC:Lazy<Mutex<HashMap<TypeId,Box<(dynAny+Se......
  • 设备全生命周期管理,开启设管管理新模式
    01数字化转型对设备管理提出新要求过去四十年,中国制造业取得了飞速发展。当前,中国制造业生产总值已名列世界前列。未来数十年我国将实现从工业大国向工业强国的转变,提高生产......
  • spring 源码之 IOC 容器的初始化过程
     学习 spring源码真的是一件痛并快乐的刺激的事。昨天听了别人的视频,任然是一头雾水,层次不一样,就不太容易接受。直接打开spring源码,断点调试,有点难度。于是又捧起书,《深......
  • [云原生] Kubernetes 控制平面组件:生命周期管理和服务发现
    Pod的生命周期包括初始化容器,容器启动之后钩子函数,就绪探测,存活探测,容器关闭前Hook函数,对应的流程图如下:Pod周期的过程如下5步:1.初始化容器阶段初始化pod中每一个容器,......