Ninject构造器绑定

时间:2012-10-03 12:51:09

标签: ninject ninject-3

我正在使用NInject。我有一个这样的对象

interface IFoo {}

class Foo : IFoo {
   public Foo(string magic, IBar bar) {}
}

我希望能够通过传递魔法来注入一些foo。每个类的魔力都不同,所以这应该返回不同的实例。

s_Kernel.Get<IFoo>("magic");
s_Kernel.Get<IFoo>("not-so-magic");

我第一次尝试绑定它已经完成了

s_Kernel.Bind<IFoo>().To<Foo>();

但是接下来我必须用一些看起来有点傻的东西来查找它。

s_Kernel.Get<IFoo>(new ConstructorArgument("magic", magic), s_Kernel.Get<IBar>());

我不想明确地将自己绑定到魔法字符串。

我得到的印象是Bind<IFoo>().ToConstructor(ctorArg => new Foo(xxx, ctorArg.Kernel.Get<IFoo>());几乎会让我在那里,但我不知道我应该为“xxx”添加什么,以便查找论据。

1 个答案:

答案 0 :(得分:1)

你要么在WithConstructorArgument流利表达链的最末端寻找Ninject.Extensions.Factory(或Bind篇,但我很确定你不是那个意思)。