准备要注册的对象 和接口,以及注册的生命周期
准备注册,先检查 是否释放
检测是否 已注册,没有则添加到 集合内并返回当前对象
GetService
根据接口获取对象,判断是否为v容器类还是 服务提供就接口,是的话直接返回当前对象
判断是否是泛型和 获取泛型 的基本类型给判断serviceType.IsGenericType && serviceType.GetGenericTypeDefinition() == typeof(IEnumerable<>))
判断服务是否已注册,
new 一个key ,在 root ,self 中用的到
根据生命周期 来对象 ,root ,self 先判断是否 已生对象,没有则 去生产对象
Transient 直接去生成新对象, 并根据是否 实现IDisposable 来 来是否添加到 Disposable是否集合里
生产对象:
判断是否有泛型参数是否有值
获取构造函数
获取自定义属性
没有自定义属性则赋值构造函数
获取构造函数参数
参数为长度0 则创建对对象并返回
如果 有参数则遍历参数
在传入当前参数并调用GetService
去创建对象,并通过委托执行 返回
标签:判断,对象,是否,获取,蒋金楠,参数,注册,NET6,IOC From: https://www.cnblogs.com/liujian1368928/p/17113743.html