У меня есть интерфейс
public interface SomeInterface {
void test();
}
и процессор аннотаций, который генерирует реализацию SomeInterface
, называемую SomeInterfaceImpl
.
Чтобы сделать этот тип доступным с помощью инъекции зависимостей Dagger, я бы создал следующее:
@Component(modules = {ApplicationModule.class})
@Singleton
public interface ApplicationComponent {
SomeInterface getSomeInterface();
}
а также
@Module
public class ApplicationModule {
@Provides
@Singleton
SomeInterface provideSomeInterface() {
return new SomeInterfaceImpl();
}
}
Проблема в том, что я не могу использовать use SomeInterfaceImpl
в моем ApplicationModule, потому что он еще не доступен и будет сгенерирован обработчиком аннотаций.
Как я могу расширить свой обработчик аннотаций, чтобы я мог использовать SomeInterface
is, доступный для внедрения зависимостей Dagger, и чтобы сгенерированная реализация SomeInterfaceImpl
была разрешена правильно?
Редактировать:
Пример работает, но я хочу создать ApplicationModule с другим процессором аннотаций и позволить процессору каким-то образом интегрировать ApplicationModule в граф кинжала. @Component (modules = {ApplicationModule.class}) не будет существовать, потому что я не знаю в коде, что ApplicationModule будет сгенерирован. Есть ли способ интегрировать сгенерированный класс @Module в Dagger Graph? Обратите внимание, что я не хочу предполагать, что ABCModule будет сгенерирован и добавлен в @Component. Я хочу, чтобы это происходило как-то автоматически.