Можно ли подключиться к событиям жизни, аналогичным OnActivating или OnActivation Autofac? - PullRequest
2 голосов
/ 20 апреля 2019

У меня есть компонент Dagger, который создается с использованием нескольких модулей.Некоторые модули требуются приложением, но некоторые другие модули являются необязательными.В первом модуле привязан сервис:

@Singleton
@Binds
abstract IService serviceBind(Service service);

Во втором дополнительном модуле привязано множество дополнительных сервисов.Я хотел бы использовать эти дополнительные сервисы из второго модуля (дополнительный модуль) для выполнения некоторых операций над сервисом из первого модуля.Я не хочу, чтобы эти дополнительные сервисы вводились непосредственно в сервис из первого модуля, потому что я не хочу связывания классов, может быть много дополнительных сервисов, я хочу иметь дело с ними, используя отражение.Кроме того, невозможно иметь все дополнительные модули, реализующие общий интерфейс.

Было бы очень удобно, если бы в Dagger была возможность прикрепить к событию время жизни экземпляра, как в Autofac (https://autofaccn.readthedocs.io/en/latest/lifetime/events.html). ДляНапример, я бы использовал следующий код:

// PSEUDOCODE!
@OnActivated
void serviceOnActivated(IService service, IServiceOptonal1 s1, IServiceOptonal2 s2){
   service.register(s1);
   service.register(s2);
}

Есть ли способ сделать что-то подобное в Dagger?

...