Я знаю, что это нехорошая практика.
Вот код, который демонстрирует проблему (но на самом деле не работает):
public interface IBar {}
public interface Bar : IBar {}
public interface IFoo {}
public class Foo : IFoo
{
public Foo(IBar bar)
{
}
}
public class InjectionModule : NinjectModule
{
public override void Load()
{
Bind<IFoo>().To<Foo>();
}
}
public class MyApp
{
public void DoSomething()
{
// Get a foo with a particular bar
var foo1 = Kernel.Get<IFoo>(new Bar());
// Get another foo with a different bar
var foo2 = Kernel.Get<IFoo>(new Bar());
}
}
Итак, я пытаюсь использовать NInject для привязки IFoo к Foo, но мое приложение передает аргумент Bar конструктору во время выполнения, а не обычную практику, когда NInject разрешает зависимость IBar.