对不起,如果标题含糊不清..
我有以下接口实现ILogProvider
:
MultiLogProvider
、、、LogInjector
和AppInsightsLogger
ConsoleLogger
我也有课DeviceInfoManager
..
预期的行为是:
ILogProvider
在这种情况下, MultiLogProvider 接受一个,AppInsightsLogProvider
和ConsoleLogger
MultiLogProvider
被注入LogInjector
andDeviceInfoManager
(仅供参考,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');
我无法弄清楚.when
以下 2 使用什么功能:
this.container.bind<ILogProvider>(TYPES.ILogProvider).to(MultiLogProvider).inSingletonScope().when*????
this.container.bind<ILogProvider>(TYPES.ILogProvider).to(LogInjector).inSingletonScope().when*????
感谢任何帮助。