TypeScript InversifyJS:接口的多个实现的复杂绑定
如果标题不清楚,很抱歉 我有以下接口实现TypeScript InversifyJS:接口的多个实现的复杂绑定,typescript,dependency-injection,inversion-of-control,inversifyjs,Typescript,Dependency Injection,Inversion Of Control,Inversifyjs,如果标题不清楚,很抱歉 我有以下接口实现ILogProvider: MultiLogProvider,LogInjector,AppInsightsLogger和ConsoleLogger 我还有一个类设备信息管理器 预期的行为是: MultiLogProvider接受一个ILogProvider数组,在本例中, AppInsightsLogProvider和ConsoleLogger MultiLogProvider被注入到LogInjector和deviceinfo-manager(仅供参考
ILogProvider
:
MultiLogProvider
,LogInjector
,AppInsightsLogger
和ConsoleLogger
我还有一个类设备信息管理器
预期的行为是:
ILogProvider
数组,在本例中,
AppInsightsLogProvider
和ConsoleLogger
MultiLogProvider
被注入到LogInjector
和deviceinfo-manager
(仅供参考,LogInjector
依赖于deviceinfo-manager
,因此比较复杂)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');
谢谢你的帮助
this.container.bind<ILogProvider>(TYPES.ILogProvider).to(MultiLogProvider).inSingletonScope().when*????
this.container.bind<ILogProvider>(TYPES.ILogProvider).to(LogInjector).inSingletonScope().when*????