Использование NInject для поиска класса, но создание класса с вашими собственными параметрами - PullRequest
1 голос
/ 22 сентября 2011

Я знаю, что это нехорошая практика.

Вот код, который демонстрирует проблему (но на самом деле не работает):

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.

1 Ответ

2 голосов
/ 22 сентября 2011
var foo1 = Kernel.Get<IFoo>(new ConstructorArgument("bar", new Bar()));
...