我正在使用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”添加什么,以便查找论据。
答案 0 :(得分:1)
你要么在WithConstructorArgument
流利表达链的最末端寻找Ninject.Extensions.Factory(或Bind
篇,但我很确定你不是那个意思)。