[英]Autofac. RegisterType after .Build and register/resolve list
有兩個問題
builder.Update(ApplicationContainer)已過時
public IServiceProvider ConfigureServices(IServiceCollection services)
{
...
builder.RegisterType<DB>();
ApplicationContainer = builder.Build();
}
public void Configure()
{
//Get list of types assigned from IPlugin
List<Type> types = PluginLoader.LoadPlugins(); <--- will need DB registered early
foreach (var item in plugins)
{
builder.RegisterType(item);
}
builder.Update(ApplicationContainer); <-- .Update() is Obsolete
}
public Manage(DB _db, IEnumerable<IPlugin> plugins)
{
}
public void Manage(Type type)
{
var IPlugin plugin = (IPlugin) GlobalResolve.Resolve(type);
}
我認為您不需要IoC作為插件加載程序。
但是,如果您堅持要我將責任分在兩個單獨的容器中。 一個容器將具有查找插件類型所需的所有位,另一個容器被您的應用程序用於“正常”工作。 在應用啟動期間,您使用初始化容器創建另一個容器。
您還可以使用容納插件加載程序的容器,並使用該容器創建另一個容器。
using (var applicationScopeContainer = _initializationContainer.BeginLifetimeScope(
builder =>
{
//register your new stuff here, resolve dependencies via _initializationContainer
}))
{
//resolve all depenencies via applicationScopeContainer
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.