Ваш класс ContextAdapter
не реализует IContextFactory
. У вас есть класс, как class Factory : IContextFactory
? Вот чего вам здесь не хватает. Затем вы можете связать его kernel.Bind<IContextFactory>.To<Factory>()
, и Ninject создаст этот тип для вас, когда вы запрашиваете объект или когда ему необходимо выполнить контракт. Я думаю, что ваше замешательство происходит из-за синтаксиса связывания. В общем, вы не связываете параметры вместе, вы привязываете интерфейсы к конкретным реализациям. Вот краткий пример:
Bind<IEngine>.To<GasEngine>();
Bind<ICar>.To<Sedan>();
class Sedan : ICar
{
public Sedan(IEngine engine) { }
}
// ...
kernel.Get<ICar>(); // get me a new car
Когда вы спросите Ninject о ICar
, он выполнит его с тем, что было связано, Sedan
. Sedan
требует IEngine
в своем конструкторе, который Ninject выполнит с GasEngine
, поскольку это то, что было связано.