Привязка Ninject Constructor
Я использую NInject. У меня есть такой объект
interface IFoo {}
class Foo : IFoo {
public Foo(string magic, IBar bar) {}
}
Я хочу быть в состоянии ввести немного фу, передавая только магию. Магия различна для каждого класса, поэтому она должна возвращать разные экземпляры.
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>());
почти доставит меня туда, но я не знаю, что я должен поставить для "ххх", чтобы он нашел аргумент.
1 ответ
Решение
Вы либо ищете Ninject.Extensions.Factory (или WithConstructorArgument
кусок в самом конце Bind
цепочка беглых выражений, но я уверен, что вы не это имеете в виду).