Как задать аннотацию Dagger 2 Qualifier к функции-конструктору функции провайдера? - PullRequest
0 голосов
/ 08 октября 2018

У меня определен Dagger 2 Qualifier

@Qualifier
@MustBeDocumented
@kotlin.annotation.Retention(AnnotationRetention.RUNTIME)
annotation class TrackerQualifier(val value: TrackerType)

enum class TrackerType {
    INTERNAL,
    EXTERNAL
}

И он хорошо работает с

@Provides
@TrackerQualifier(TrackerType.INTERNAL)
@Singleton
UsageTracker providesInternalTracker(InternalTracker analyticsTracker) {
    return new UsageTracker(analyticsTracker);
}

@Provides
@TrackerQualifier(TrackerType.EXTERNAL)
@Singleton
UsageTracking providesExternalTracker(ExternalTracker eventTracker) {
    return eventTracker;
}

Однако, если мне нравится отправлять его в другой введенный модуль.

@Provides
fun provideCommonImage(
        imageEngine: ImageEngine,
        externalUsageTracking: UsageTracking) =
        CommonImage(imageEngine, externalUsageTracking)

Сбой компиляции, так как он не знает, является ли externalUsageTracking: UsageTracking выше INTERNAL или EXTERNAL.Как я могу добавить это к параметру?

1 Ответ

0 голосов
/ 08 октября 2018

попробуйте явно указать классификатор.

@Provides
fun provideCommonImage(
        imageEngine: ImageEngine,
        @TrackerQualifier(TrackerType.EXTERNAL) tracker: UsageTracker) =
        CommonImage(imageEngine, tracker)
...