参数名称 使用 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()));

我尝试了很多答案,但一直失败。 对我在搜索中失败的任何帮助或 url 指导将不胜感激。 我想将工作单元绑定到复制数据库上下文,或者绑定到正常上下文。 我希望能够说内核应该将名为复制的构造函数中的所有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");

最新更新