好的,所以情况并不像标题中那么简单。这是交易。
我有一个类 ComplexClass,它期望将几个参数注入其中。参数“A”在模块 A 中定义,而参数“B”在模块 B 中定义。另一方面,参数“C”在模块 C1 和模块 C2 中定义。
我有一个使用上述所有四个模块创建的注入器。对不起,但它必须是一个注射器。
现在,我想创建两个不同的 ComplexClass 实例——一个带有第三个参数来自模块 C1,第二个来自模块 C2。
谢谢!
好的,所以情况并不像标题中那么简单。这是交易。
我有一个类 ComplexClass,它期望将几个参数注入其中。参数“A”在模块 A 中定义,而参数“B”在模块 B 中定义。另一方面,参数“C”在模块 C1 和模块 C2 中定义。
我有一个使用上述所有四个模块创建的注入器。对不起,但它必须是一个注射器。
现在,我想创建两个不同的 ComplexClass 实例——一个带有第三个参数来自模块 C1,第二个来自模块 C2。
谢谢!
这个问题通常被称为“机器人腿问题”。
并在此处查看 Jesse Wilson 的回答: 如何使用 Google Guice 绑定不同的接口?
根据PrivateModule
s 解决方案,您只需在 s 内安装 C1 和 C2 的模块,每个模块都使用不同的绑定注释PrivateModule
绑定您。ComplexClass
还有其他可能的解决方案,例如使用辅助注入来注入可能来自两个地方之一的依赖项。