如何为 Provider 函数构造函数参数指定 Dagger 2 Qualifier Annotation?
How to specify Dagger 2 Qualifier Annotation to Provider function Constructor parameter?
我定义了 Dagger 2 限定符
@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
。我怎样才能将它注释到参数中?
尝试明确限定词。
@Provides
fun provideCommonImage(
imageEngine: ImageEngine,
@TrackerQualifier(TrackerType.EXTERNAL) tracker: UsageTracker) =
CommonImage(imageEngine, tracker)
我定义了 Dagger 2 限定符
@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
。我怎样才能将它注释到参数中?
尝试明确限定词。
@Provides
fun provideCommonImage(
imageEngine: ImageEngine,
@TrackerQualifier(TrackerType.EXTERNAL) tracker: UsageTracker) =
CommonImage(imageEngine, tracker)