再次理解 Dagger 的工作原理时遇到了一些麻烦,这次是用一些代码。
我有几个类和它们各自的接口
public class SomeView {
@Inject ISomeManager
public SomeView() {}
...
}
public class SomeManager implements ISomeManager {
@Inject IDataProvider
public SomeManager() {}
...
}
public class DataProvider implements IDataProvider {
...
}
和一个大致类似的组件
@Component(modules = {DataModule.class, SomeModule.class})
public interface AppComponent() {
ISomeView getSomeView();
}
那么,在所有注入正确发生的情况下,我还需要创建一个SomeView
via实例吗?getSomeView
我试图拥有一个@Module(includes = DataModule.class)
那个@Provides ISomeView provideISomeView()
(或者,provideISomeView(IDataProvider dataProvider)
至少确实DataProvider
在所述方法中给了我一个正确的实例),但无论我尝试什么,如果IDataProvider
不手动设置模块中的字段甚至在SomeManager
构造函数本身——这使得那里的陈述@Inject
变得毫无意义。