1

对不起,如果标题含糊不清..

我有以下接口实现ILogProviderMultiLogProvider、、、LogInjectorAppInsightsLoggerConsoleLogger

我也有课DeviceInfoManager..

预期的行为是:

  1. ILogProvider在这种情况下, MultiLogProvider 接受一个,AppInsightsLogProviderConsoleLogger

  2. MultiLogProvider被注入LogInjectorand DeviceInfoManager(仅供参考,LogInjector依赖于DeviceInfoManager,因此很复杂)

  3. 任何其他请求ILogProvider都应该得到LogInjector

我已经尝试了, 和其他几个函数的一些不同变体.when,但我要么最终得到循环依赖,要么由于一些看似不确定的解析循环,请求永远无法解析。.whenNoAncestorMatches.when*

我相当肯定这两行是正确的:

this.container.bind<ILogProvider>(TYPES.ILogProvider).to(ConsoleLogger).inSingletonScope().whenInjectedInto('MultiLogProvider');

this.container.bind<ILogProvider>(TYPES.ILogProvider).to(AppInsightsLoggingProvider).inSingletonScope().whenInjectedInto('MultiLogProvider');

我无法弄清楚.when以下 2 使用什么功能:

this.container.bind<ILogProvider>(TYPES.ILogProvider).to(MultiLogProvider).inSingletonScope().when*????

this.container.bind<ILogProvider>(TYPES.ILogProvider).to(LogInjector).inSingletonScope().when*????

感谢任何帮助。

4

0 回答 0