对不起,标题不清楚。
我有接口ILogProvider
的以下实现:
MultiLogProvider
,LogInjector
,AppInsightsLogger
和ConsoleLogger
我还有一个DeviceInfoManager
类。.
预期的行为是:
MultiLogProvider接受ILogProvider
数组,在这种情况下,
AppInsightsLogProvider
和ConsoleLogger
MultiLogProvider
被注入到LogInjector
和DeviceInfoManager
中(仅供参考,LogInjector
依赖于DeviceInfoManager
,因此很复杂)
请求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');
我不知道在以下2种情况下将使用什么.when
函数:
this.container.bind<ILogProvider>(TYPES.ILogProvider).to(MultiLogProvider).inSingletonScope().when*????
this.container.bind<ILogProvider>(TYPES.ILogProvider).to(LogInjector).inSingletonScope().when*????
感谢任何帮助。