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

本文关键字:上下文 取决于 参数 构造函数 Ninject | 更新日期: 2023-09-27 18:28:51

我有

interface IConfigurationSource
{
      ....
}

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

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

谢谢,

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

WhenjectedInto可用于更改在不同目标中注入的内容。这并不违反IoC IMHO,因为你让其他人负责确定依赖关系,而不是类本身。

类似的东西

 IConfigurationSource source2 = new FileConfigurationSource("Config2.xml");
 kernel.Bind<IConfigurationSource>().ToConstant(source2).WhenInjectedInto<ClassB>();