我有一个核心Android库,我定义了接口数量及其默认实现。所有这些都是由CoreCompodule公开的CoreModule公开的。
核心模块
@Module
public class CoreModule {
@Provides
public IAuthenticationViewExtension provideToolsViewExtension() {
return new AuthenticationViewExtension();
}
@Provides
public ISettingsViewExtension provideISettingsViewExtension() {
return new SettingsViewExtension();
}
}
核心组件
@Component( modules = {CoreModule.class})
public interface CoreComponent {
CoreComponent coreComponent();
void inject(BaseLauncher baseLauncher);
ISettingsViewExtension iSettingsViewExtension();
}
所有实现仅在Core库中注入。
还有一个依赖Core库的Ui库。此外,Ui库可以为Core库中定义的某些接口提供自定义实现。
├── Ui Library
└── Core Library
└── Core Library
为了实现目标,我在Ui库中创建了自定义@component和@module
@Component(dependencies = {UiComponent.class},
modules = {UiModule.class})
public interface UiComponent {
}
@Module
public class DemoUiModule {
@Provides
public IAuthenticationViewExtension provideToolsViewExtension() {
return new CustomAuthenticationViewExtension();
}
}
我认为为Core库提供自定义实现的最佳解决方案是使用子组件但不幸的是,它似乎不可能,因为核心库没有其他库的可见性(Ui库及其& #39; s @component),所以我无法在Core库中注入任何自定义实现。 有什么帮助吗?