在理解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
创建getSomeView
的实例,并且所有注入都正确发生?
我尝试@Module(includes = DataModule.class)
@Provides ISomeView provideISomeView()
(或者更确切地说,provideISomeView(IDataProvider dataProvider)
至少确实在我的方法中给了我一个正确的DataProvider
个实例),但是没有无论我尝试了什么,我都无法注入IDataProvider
而无需在模块中手动设置字段,甚至在SomeManager
构造函数本身中设置字段 - 哪种类型的@Inject
语句有点无意义。