C# 自动传真机。RegisterType after.Build和register/resolve列表

C# 自动传真机。RegisterType after.Build和register/resolve列表,c#,inversion-of-control,autofac,C#,Inversion Of Control,Autofac,我有两个问题 多么正确的生成器.RegisterType。。应用程序容器之后= 建筑商,建筑商 builder.UpdateApplicationContainer已过时 public IServiceProvider配置服务服务服务收集服务 { ... builder.RegisterType; ApplicationContainer=builder.Build; } 公共无效配置 { //获取从IPlugin分配的类型列表 List types=PluginLoader.LoadPlugi

我有两个问题

多么正确的生成器.RegisterType。。应用程序容器之后= 建筑商,建筑商 builder.UpdateApplicationContainer已过时

public IServiceProvider配置服务服务服务收集服务 { ... builder.RegisterType; ApplicationContainer=builder.Build; } 公共无效配置 { //获取从IPlugin分配的类型列表
List types=PluginLoader.LoadPlugins;我认为PluginLoader不需要IoC

但是,如果您坚持,我会将责任分为两个单独的容器。一个容器将包含查找插件类型所需的所有位,另一个容器由您的应用程序用于“正常”职责。在应用程序启动期间,您使用初始化容器创建另一个容器

        using (var applicationScopeContainer = _initializationContainer.BeginLifetimeScope(
             builder =>
             {
                 //register your new stuff here, resolve dependencies via _initializationContainer
             }))
        {
            //resolve all depenencies via applicationScopeContainer
        }
您还可以使用包含pluginloader的容器来创建另一个容器

        using (var applicationScopeContainer = _initializationContainer.BeginLifetimeScope(
             builder =>
             {
                 //register your new stuff here, resolve dependencies via _initializationContainer
             }))
        {
            //resolve all depenencies via applicationScopeContainer
        }

在生成现有配置后更新它是个坏主意,这就是为什么该方法已过时的原因。您应该将插件的加载移动到ConfigureServices方法。@Steven我需要在PluginLoaderbuilder.RegisterType中注册DB和其他插件。在ConfigureServices中手动创建PluginLoader。