Параметр Ninject конструктора в зависимости от контекста - PullRequest
1 голос
/ 23 марта 2012

у меня

interface IConfigurationSource
{
      ....
}

и

class FileConfigurationSource : IConfigurationSource
{
      FileConfigurationSource(string fileName)
      {
           ...
      }
}

Я должен использовать FileConfigurationSource в двух разных местах, скажем, «Config1.xml» в ClassA и «Config2.xml» в ClassB. Как использовать ninject для предоставления правильного параметра в зависимости от контекста или это нарушает шаблон IoC / DI?

Спасибо

1 Ответ

4 голосов
/ 23 марта 2012

.WhenInjectedInto может использоваться для изменения того, что вводится в разные цели.Это не нарушает IoC ИМХО, потому что вы делаете так, что кто-то лишает ответственности определять зависимость, а не сам класс.

Что-то вроде

 IConfigurationSource source2 = new FileConfigurationSource("Config2.xml");

 kernel.Bind<IConfigurationSource>().ToConstant(source2).WhenInjectedInto<ClassB>();
...