在我的场景中,我有BaseObject
这是一个界面,然后是BaseObjectImpl
。
然后我有两个客户端ClientA
和ClientB
,它们都引用BaseObjectImpl
,其次要的不同之处在于BaseObjectImpl
的构造函数参数应该根据哪个客户端而变化使用它。设置如下:
BaseObject
:
public interface BaseObject {
void doAction();
}
BaseObjectImpl:
public class BaseObjectImpl implements BaseObject {
@Inject
public BaseObjectImpl(RandomInjectedObject random, String inputString) {
this.inputString = inputString;
}
public void doAction() {
// print input string
}
现在为客户:
客户端A:
public class ClientA {
@Inject
public ClientA(BaseObject baseObject) {
this.baseObject = baseObject;
}
ClientB:
public class ClientB {
@Inject
public ClientB(BaseObject baseObject) {
this.baseObject = baseObject;
}
现在的问题是,当我在ClientAModule
内时,我希望提供inputString
参数,使其设置为clientAString
,而ClientBModule
设置为clientBString
我想提供{ {1}}而是。
这样做的最佳方法是什么?请注意,BaseObjectImpl接受两个参数(另一个参数对两个客户端具有相同的定义)。
我尝试做的是在我定义的BaseObjectModule
类中,我在其中创建了一个Builder
,我可以设置一个特定的注释并设置一个特定的inputString
。然后在我的Client<AB>Module
内,我在每个BindingAnnotation
中创建了一个不同的BaseObjectModule
。然后,当我安装BindingAnnotation
时,我使用构建器并且每个都传递了特定的inputString
和BindingAnnotation
。
然后我尝试将inputString
/ Provider
范围绑定到BaseObject
,BaseObjectImpl
是我尝试使用相应的inputString
实例化RandomInjectedObject
{1}}以及我在BaseObjectModule
中提供的注入This Provider cannot be used until the Injector has been created
。我收到一个错误说:
AssistedInjection
因为我还没有在模块内部创建注入器。
我正在查看inputString
以便我可以这样做,所以我此时只是通过了UILabel
,但问题是我仍然需要注射器。