假设我有两个服务AService
和BService
,两者都需要 api 密钥。
所以在我的模块中,我不能做类似的事情:
@Provides @Singleton @A @ApiKey String provideAKey() { return "a"; }
@Provides @Singleton @B @ApiKey String provideBKey() { return "b"; }
Run Code Online (Sandbox Code Playgroud)
(Dagger 会抱怨“每个元素只允许有一个限定符注释”)。相反,我要做的是为每个组合定义两个单独的限定符:@ApiKeyA
和@ApiKeyB
。
对于具有多个依赖项的服务(例如网络客户端、请求标头等),为每个组合定义这些限定符而不是简单地组合不同的注释会变得很麻烦。
有没有明确禁止这样做的原因?