说我有这样的事情:
@Module
internal class SeenModule {
@Provides
fun parameter() = Parameter()
@Provides
fun actualThingINeedToInject(parameter: Parameter) = ActualThing(parameter)
}
但是,这个模块实际上只需要提供一个ActualThing对象 - 换句话说,参数只在那里,因为它自己的模块需要它。我不希望它成为可以在此模块之外检索的依赖集的一部分。我目前正在这样做的方法是将自定义范围定义为私有,然后标记提供依赖关系的方法,这些方法不应该使模块具有此范围,以及应该注入所提供的依赖关系的模块中的那些,当然。这有点令人讨厌,因为它阻止我在这些方法中使用其他范围,并且需要在整个地方进行大量额外的注释。实现这个目标的正确方法是什么?
在你要求的意义上,Dagger并没有提供“私人绑定”,其中参数不能从其他地方注入。我还建议不要使用范围注释进行可见性,部分原因是组件本身需要使用该范围注释进行注释,因此范围注释只会略微增加不正确地使用Parameter所需的麻烦(以及创建组件所需的麻烦)正确消耗参数)。
我会提供以下三种选择之一: