簡體   English   中英

我應該如何通過Autofac.Dependency注入庫將參數傳遞給Autofac容器以實現自動依賴關系解析

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM