首页 > 其他分享 >IOC小记-2

IOC小记-2

时间:2023-02-15 22:45:10浏览次数:35  
标签:释放 IservicesProvider Qux 实例 AddTransient IOC public 小记

服务的创建

在创建对象时

有多个构造函数符合条件,会报错System.InvalidOperationException:“Unable to activate type 'App.Qux'. The following constructors are ambiguous:
要有唯一的才行


new ServiceCollection()
.AddTransient<IFoo, Foo>()
.AddTransient<IBar, Bar>()
.AddTransient<IBaz, Baz>()
.AddTransient<IQux, Qux>()
.BuildServiceProvider()
.GetServices<IQux>();



public class Qux : IQux
{
/// <summary>
/// 后续添加的
/// </summary>
/// <param name="foo"></param>
/// <param name="bar"></param>
/// <param name="baz"></param>
public Qux(IFoo foo, IBar bar, IBaz baz) { Console.WriteLine("这是最合适的,后续添加,去除这里为原来程序"); }

public Qux(IFoo foo, IBar bar) { }
public Qux(IBar bar, IBaz baz) { }

}

生命周期
Singleton 根容器,服务实例保存在IserviceProvider对象上,IservicesProvider释放时,对应的实例才会被释放
Scoped,Transient 当前IservicesProvider保存的服务实例,IservicesProvider释放,这些服务实例才释放
释放会实现IDisposable 接口或IDisposableAsync
实例在
IservicesProvider 中用RealizedServices和Disposable Services中,两种生命周期(Singleton,Scoped)独有对应的
RealizedServices 用有储存实例,创建前先检查释放有,有则直接返回,没有则创建,Transient会直接创建新对象
创建后如果时间IDisposable接口,则添加到IDisposable 那个列表中等待释放,

















  

 

标签:释放,IservicesProvider,Qux,实例,AddTransient,IOC,public,小记
From: https://www.cnblogs.com/liujian1368928/p/17125030.html

相关文章

  • 数据结构刷题2023.02.15小记
    各排序算法时间复杂度如何提高哈希表的查找效率Hash表的查找效率取决于散列函数、处理冲突的方法和装填因子。显然,冲突的产生概率与装填因子(表中记录数与表长之比)的大小......
  • IoC入门案例
    1.管理什么?(Service和Dao)2.如何将被管理的对象告知IoC容器?(配置)3.被管理的对象交给IoC容器,如何获取IoC容器?(接口)4.IoC容器得到后,如何从容器中获取到bean?(接口方法)5使用Spri......
  • 【Spring IOC】【二】容器源码解析- 获取单例 Bean
    1 前言在本篇文章中,我们将会详细分析BeanFactory的getBean(String)方法实现细节及所调用的方法。2 源码分析首先我们先通读一下doGetBean方法,了解里边重点的几个步......
  • C# 初使autofac IOC容器
    先捋下概念。IOC称InversionofControl,即“控制反转”,不是什么技术,而是一种设计思想,这种思想最大的好处是解耦,依赖于接口而非依赖于实例,充分体现了面向接口编程......
  • IOC小记
    服务范围有效性检查varroot=newServiceCollection().AddSingleton<IFoo,Foo>().AddScoped<IBar,Bar>().BuildServiceProvider(true);//是否是单例转为瞬时或者......
  • 面试题如何实现一个IOC容器
     ......
  • Solon2 开发之IoC,十、Bean 在容器的两层信息
    1、剖析Bean的装包与注册过程比如,用配置器装配一个Bean(本质是装配出一个BeanWrap,并自动注册到容器):@ConfigurationpublicclassConfig{//同时以名字和类型进......
  • Spring IOC官方文档学习笔记(十)之类路径扫描与组件管理
    1.@Component注解与其衍生注解(1)在Spring中,@Component注解用于说明某个类是一个bean,之后Spring在类路径扫描过程中会将该bean添加至容器中;@Component注解还有很多衍......
  • Solon2 开发之IoC,九、自定义注解开发汇总
    1、定义构建能力注解,比如@Controller注解类:@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@interfaceController{}注解类......
  • 001.SpringIoc初体验
    1.创建entity(Apple、Child)packagecom.imooc.spring.ioc.entity;publicclassApple{privateStringtitle;privateStringcolor;privateStringori......