Ninject构造函数参数取决于上下文

时间:2012-03-23 12:07:31

标签: c# inversion-of-control ninject

我有

interface IConfigurationSource
{
      ....
}

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

我必须在两个不同的地方使用FileConfigurationSource,在ClassA中说“Config1.xml”,在ClassB中说“Config2.xml”。我如何使用ninject根据上下文提供正确的参数或违反IoC / DI模式?

谢谢,

1 个答案:

答案 0 :(得分:4)

.WhenInjectedInto可用于更改不同目标中注入的内容。这并不违反IoC恕我直言,因为你让别人有责任确定依赖而不是类本身。

这样的东西
 IConfigurationSource source2 = new FileConfigurationSource("Config2.xml");

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