我有Dagger组件,它是使用几个模块创建的。应用程序需要某些模块,而其他一些模块是可选的。在第一个模块中,服务是绑定的:
@Singleton
@Binds
abstract IService serviceBind(Service service);
在第二个可选模块中,绑定了许多可选服务。我想使用第二个模块(可选模块)中的这些可选服务,对第一个模块中的服务执行一些操作。我不想将这些可选服务直接从第一个模块注入到服务中,因为我不希望类耦合,所以可能会有很多可选服务,我想使用反射来处理它们。另外,不可能所有可选模块都实现公共接口。
如果在Dagger中有可能附加到实例生存期事件,例如在Autofac(https://autofaccn.readthedocs.io/en/latest/lifetime/events.html)中,这将非常方便。例如,我将使用以下代码:
// PSEUDOCODE!
@OnActivated
void serviceOnActivated(IService service, IServiceOptonal1 s1, IServiceOptonal2 s2){
service.register(s1);
service.register(s2);
}
在Dagger中有什么办法做类似的事情吗?