0

我正在使用 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”输入什么,以便它查找参数。

4

1 回答 1

1

你要么在寻找Ninject.Extensions.Factory(或者在fluent-expression 链WithConstructorArgument的最末端,Bind但我很确定你不是那个意思)。

于 2012-10-04T00:34:11.003 回答