簡體   English   中英

使用Ninject進行參數名稱庫的依賴注入

[英]Parameter name base dependency injection with Ninject

我試圖找到答案,可能搜索不好。 我發現的結果無濟於事,因此,如果您找到我要的答案,請指出我的力量方向。

我試圖基於名稱注入構造函數參數。

public class ReportController : Controller
{
    public ReportController(IUOW replication)
    {
    }
}
public class NormalController : Controller
{
    public NormalController(IUOW uow)
    {
    }
}

因此,在ninjectwebcommon文件中,我嘗試根據參數名稱為控制器初始化參數。 這是有效的綁定,但隨后所有指向同一實例。

kernel.Bind<IUOW>().ToConstructor(i => new UOW(new DatabaseContext()));

我嘗試了很多答案,但是一直失敗。 任何有關我搜索失敗的幫助或網址指南將不勝感激。 我想將工作單元綁定到復制數據庫上下文,否則要綁定到普通上下文。 我想說的是,內核應將名為復制的構造函數中的所有IUOW綁定到新的UOW(new ReplicationContext()),否則應綁定新的UOW(new DatabaseContext())

您是否嘗試過使用命名綁定? 在此處查看文檔:

https://github.com/ninject/Ninject/wiki/Contextual-Binding

public class ReportController : Controller
{
    public ReportController([Named("replication")]IUOW replication)
    {
    }
}
public class NormalController : Controller
{
    public NormalController([Named("uow")]IUOW uow)
    {
    }
}

然后,您將以這種方式綁定它們

kernel.Bind<IUOW>().ToConstructor(i => new UOW(new DatabaseContext())).Named("uow");
kernel.Bind<IUOW>().ToConstructor(i => new SomethingElse(new DatabaseContext())).Named("replication");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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