Slide 25
Slide 25 text
InjectorWrapper
class InjectorWrapper(
private val targetClass: Class,
private val defaultInjector: (T) -> Unit // DaggerのInjector
) {
fun inject(target: T) {
val injector = injectorDelegateMap[targetClass] ?: defaultInjector
injector.invoke(target)
}
companion object {
private val injectorDelegateMap = mutableMapOf, (Any) -> Unit>()
// Test用のInjector
@VisibleForTesting
fun setDelegate(targetClass: Class, injector: (T) -> Unit) {
@Suppress("UNCHECKED_CAST")
injectorDelegateMap[targetClass] = { injector.invoke(it as T) }
}
}
}