В моем текущем проекте Android используется ряд классов данных Kotlin, в которых для их построения используются конструкторы.
Я хочу внедрить экземпляр в класс данных Kotlin.
Каждый из моих классов данныхимеют эту базовую структуру
data class MyDataKlass( val onError: Consumer<in Throwable>,
val onComplete: Action,
val dbController: DatabaseController,
val lnController: ILoginNetworkController) : BaseSO() {
@SuppressLint("CheckResult")
fun execute() {
}
}
fun myFunction(block: MyDataKlassBuilder.() -> Unit): MyDataKlass = MyDataKlassBuilder().apply(block).build()
class MyDataKlassBuilder {
var onError: Consumer<in Throwable> = Consumer { }
var onComplete: Action = Action { }
lateinit var dbController: DatabaseController
lateinit var lnController: ILoginNetworkController
fun build(): MyDataKlass = MyDataKlass(onError, onComplete, dbController, lnController)
}
Я использую эти классы следующим образом: -
val myFunction = myFunction {
onComplete = Action { syncWorkerResult = Result.success() }
dbController = databaseController
lnController = loginNetwork
onError = Consumer {
syncWorkerResult = Result.failure()
}
}
myFunction.execute()
В настоящее время я передаю в свою базу данных (DatabaseController
) и сетевые (ILoginNetworkController
) контроллерыв конструкторы классов Kotlin Data
Я хочу @Inject, чтобы сделать мой код "чище"
Я могу @Inject внедрять как в свою деятельность, так и в репозитории, но не могу понять, как использовать Daggerвнедрить их в вышеупомянутые классы данных.
Возможно ли @Inject в классы данных Kotlin?