再次理解 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();
}
那么,在所有注入正确发生的情况下,我还需要创建一个SomeViewvia实例吗?getSomeView
我试图拥有一个@Module(includes = DataModule.class)那个@Provides ISomeView provideISomeView()(或者,provideISomeView(IDataProvider dataProvider)至少确实DataProvider在所述方法中给了我一个正确的实例),但无论我尝试什么,如果IDataProvider不手动设置模块中的字段甚至在SomeManager构造函数本身——这使得那里的陈述@Inject变得毫无意义。