C# 自动传真机。RegisterType after.Build和register/resolve列表
我有两个问题 多么正确的生成器.RegisterType。。应用程序容器之后= 建筑商,建筑商 builder.UpdateApplicationContainer已过时 public IServiceProvider配置服务服务服务收集服务 { ... builder.RegisterType; ApplicationContainer=builder.Build; } 公共无效配置 { //获取从IPlugin分配的类型列表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
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。