[英]How should I pass parameters to the Autofac container for auto dependency resolution via Autofac.Dependency injection lib
這是問題所在。 我目前正在使用Autofac在我的AspNetCore MVC應用程序中使用TypedParameters解析所有依賴關系,但是我認為我做錯了一些,我可以做得更干凈。
以下是以下代碼示例
組態:
public static void Configure(IConfiguration cfg,IServiceCollection services)
{
/// some code is skipped here. Module registrant is just pulling out
/// the services from dlls and register them.
ioCBuilder.Populate(services);
ioCBuilder.RegisterModule(new ModuleRegistrant(cfg, registrantOptions));
IoCHelper.Container = ioCBuilder.Build();
}
樣本庫:
public class PriorityRepository: IPriorityRepository
{
public PriorityRepository(DbContext db)
{
Db = db;
}
/// <inheritdoc />
public Priority GetDefault()
{
return Db.Set<Priority>().SingleOrDefault(it => it.IsDefault);
}
}
目前,我得到以下信息庫:
public class PriorityController: Controller
{
public PriorityController(TestContext db)
{
var ctxParam = new TypedParameter(typeof(DbContext), db);
PriorityRepository = IoCHelper.Container.Resolve<IPriorityRepository>(ctxParam);
}
public IPriorityRepository PriorityRepository { get; set;}
}
我希望它像那樣
public class PriorityController: Controller
{
public PriorityController(IPriorityRepository priorityRepo)
{
PriorityRepository = priorityRepo;
}
public IPriorityRepository PriorityRepository { get; set;}
}
因此,基本上的問題是:如何在構造函數中注入已經略有不同的類型(更抽象)的已注冊類型?
Func
用於解析Autofac中的參數化依賴關系。
請通過鏈接https://autofaccn.readthedocs.io/en/latest/resolve/relationships.html#parameterized-instantiation-func-xyb了解實現細節和其他可用選項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.