Android匕首依赖循环

Android匕首依赖循环,android,dependency-injection,cycle,dagger,Android,Dependency Injection,Cycle,Dagger,我有两个具有相同范围的依赖项,它们需要相互依赖 我的依赖关系是具有不同方法的域服务(每个方法都有不同的业务案例)。某些业务案例可能使用来自另一个域的方法 为了做到这一点,我需要域1可用于域2,反之亦然 但当我这样做时,我会得到一个依赖循环编译错误。在谷歌搜索了一段时间后,我发现为了克服这个问题,我必须在@Module中用@inject注释而不是构造函数参数注入一个依赖项 当我尝试此操作时,代码会编译,但dagger根本没有注入第二个依赖项 有没有办法用匕首达到我想要的 您的问题:AClass对B

我有两个具有相同范围的依赖项,它们需要相互依赖

我的依赖关系是具有不同方法的域服务(每个方法都有不同的业务案例)。某些业务案例可能使用来自另一个域的方法

为了做到这一点,我需要域1可用于域2,反之亦然

但当我这样做时,我会得到一个依赖循环编译错误。在谷歌搜索了一段时间后,我发现为了克服这个问题,我必须在@Module中用@inject注释而不是构造函数参数注入一个依赖项

当我尝试此操作时,代码会编译,但dagger根本没有注入第二个依赖项


有没有办法用匕首达到我想要的

您的问题:AClass对BClass具有构造函数依赖性,而BClass对AClass具有构造函数依赖性。即使没有匕首,这也行不通:如果他们相互依赖,你会先创造哪一个

您尝试的解决方案:如果您使用
new
创建一个类(BClass),并且它不再具有
@Inject
-注释的构造函数,您可以等到构造AClass后再填充BClass实例。但是,如果使用
new
创建对象,则需要通过将其传递到成员注入方法或
MembersInjector
对象来注入该对象。您还需要确保这发生在
@Provides
方法之外(因为调用
@Provides
的全部原因是为了您可以构造一个值来传递给AClass的构造函数)。这是脆弱的,相当丑陋


我的建议:使用。让AClass inject
Provider
或BClass inject
Provider查看可用注入的完整列表。

答案是肯定的,但是如果没有代码,没有人能够告诉你你做错了什么。我认为你的依赖结构中可能存在一个根本问题,你能发布一些代码吗?谢谢你的时间,这是个好消息。最后,我决定添加一个新的额外层(“Interactor”)在表示层和域层之间,将多个域合并到复杂的业务案例中。@Jeff您能再解释一下如何实现吗this@WISHY如果没有具体的代码,我不确定我能说得清楚多少:直接注入当前正在注入的对象的提供者,如答案中的链接所示。