.AddTransient<IFoo, Foo>() // //ImplementationType 根据类型 .AddScoped<IBar>(_ => new Bar())//ImplementationFactory 通过工厂创建 .AddSingleton<IBaz>(new Baz());//ImplementationInstance 实现实例 添加对象注册并注册不同作用域,并遍历注册到容器内。 1 ImplementationFactory 通过工厂创建, 创建 一个基于容器的委托 service.ImplementationFactory(provider),,最后根据这个委托实现IServiceProvider 接口来执行 new Bar() 来创建对象 2 ImplementationType 根据类型 创建基于容器的委托, Func<Cat, Type[], object?> factory = (c, arguments) => Create(c, to, arguments);最后传入参数调用这个委托来创建对象 3 ImplementationInstance 实现实例 这里创建一个委托 Func<Cat, Type[], object?> factory = (_, arguments) => instance; 直接调用对象来创建 4 创建好委托后会会将委托,生命周期等信息写入 ServiceRegistry 服务注册类,并添加到容器的字典集合里 type为键,最后创建返回容器。 (这里注册一个委托,写入 ServiceRegistry 服务注册类,用来创建范围工厂和生成子容器 _cat.Register<IServiceScopeFactory>(c => new ServiceScopeFactory(c.CreateChild()), Lifetime.Transient);//创建子容器,创建范围工厂,就是生命周期) 5 创建范围。通过容器来执行刚刚的 生成容器是注册的委托,创建子容器,就是在容器里有创建了一个容器 6 获取服务创建对象,通过执行前面容器里的注册的委托。根据不同注册方式来进行不同的对象创建
标签:容器,依赖,委托,NetCore,创建,创建对象,注册,new,注入 From: https://www.cnblogs.com/liujian1368928/p/18064354