我有
interface IConfigurationSource
{
....
}
和
class FileConfigurationSource : IConfigurationSource
{
FileConfigurationSource(string fileName)
{
...
}
}
我必须在两个不同的地方使用FileConfigurationSource
,在ClassA中说“Config1.xml”,在ClassB中说“Config2.xml”。我如何使用ninject根据上下文提供正确的参数或违反IoC / DI模式?
谢谢,
答案 0 :(得分:4)
.WhenInjectedInto可用于更改不同目标中注入的内容。这并不违反IoC恕我直言,因为你让别人有责任确定依赖而不是类本身。
像
这样的东西 IConfigurationSource source2 = new FileConfigurationSource("Config2.xml");
kernel.Bind<IConfigurationSource>().ToConstant(source2).WhenInjectedInto<ClassB>();