注入构造函数绑定



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

你要么在寻找Ninject.Extensions.Factory(要么是Bind流畅表达链末端的WithConstructorArgument片,但我相当确定你不是那个意思)。

最新更新