【发布时间】:2017-01-25 05:53:43
【问题描述】:
我是 DI 的新手(使用 Ninject)并且刚刚开始学习这些概念,但我一直在摸索一段时间才能理解这一点:
假设我在我的程序中对同一个类有不同的用法(以下示例中的ProcessContext)。
在第一堂课(SomeClass):我想将Implement1注入ProcessContext实例。
第二类(SomeOtherClass):我想将Implement2注入ProcessContext实例。
我应该如何使用 Ninject 执行绑定?
public class Implement1 : IAmInterace
{
public void Method()
{
}
}
public class Implement2 : IAmInterace
{
public void Method()
{
}
}
public class ProcessContext : IProcessContext
{
IAmInterface iamInterface;
public ProcessContext(IAmInterface iamInterface)
{
this.iamInterface = iamInterface;
}
}
public class SomeClass : ISomeClass
{
public void SomeMethod()
{
// HERE I WANT TO USE: processcontext instance with Implement1
IProcessContext pc = kernel.Get<IProcessContext>();
}
}
public class SomeOtherClass : ISomeOtherClass
{
public void SomeMethod()
{
// HERE I WANT TO USE: processcontext instance with Implement2
IProcessContext pc = kernel.Get<IProcessContext>();
}
}
【问题讨论】:
-
听起来您需要像strategy pattern 这样的东西,它允许您根据参数选择实现。这是另一个example,它结合了相同的模式和抽象工厂来动态获取实例。
标签: c# dependency-injection ninject