Ninject工厂方法用输入参数来确定返回哪个实现

时间:2013-12-07 16:59:08

标签: ninject factory-pattern

我试图找到一种方法来获得一个工厂类/方法,它将接受一个对象或某种标识符(字符串或类型),然后根据输入参数确定要创建和返回的接口的哪个实现。

如何设置我的工厂方法并注册接口的依赖项?以下是我的粗略内容。

public class ISampleFactory
{
   public ISample GetSample(Type type)
   {
      // do something here to return an implementation of ISample
   }
}


public class SampleA : ISample
{
   public void DoSomething();
}

public class SampleB : ISample
{
   public void DoSomething();
}

public interface ISample
{
   void DoSomethin();
}

1 个答案:

答案 0 :(得分:0)

查看ninject Contextual Bindings文档: 您可以使用命名绑定:

this.Bind<ISample>().To<SampleA>().Named("A");
this.Bind<ISample>().To<SampleB>().Named("B");

或与任何已有扩展程序的条件绑定或编写自己的扩展程序:

this.Bind<ISample>().To<SampleA>().When(...);
this.Bind<ISample>().To<SampleB>().When(...);

请参阅https://github.com/ninject/ninject/wiki/Contextual-Binding