我正在使用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
片,但我相当确定你不是那个意思)。