Как я могу получить класс делегирования свойства-члена?Kotlin: Как я могу получить класс делегирования свойства члена?
Под этим я имею в виду, что можно выполнить такую функцию:
inline fun <reified T> delegationExample(t: T) {
for (prop in T::class.declaredMemberProperties) {
val delegatedClass = // what to do?!
}
}
Если класс делегация может выглядеть следующим образом:
class DelegationExample {
operator fun getValue(ref: Any, prop: KProperty<*>) = 0
}
И объявление класса может выглядеть следующим образом:
object Example {
val a by DelegationExample()
val b by DelegationExample()
val c by DelegationExample()
}
Мой патч: https://gist.github.com/Jire/df9c99fac5e4d3f35e1a6c517716f989 – Jire
Конечно, оба делают подобные вещи. Я хотел вернуть все вещи, которые делегируют в этом примере, а также не называть 'isAccessible' на все, что у меня не было (есть ли влияние на вызов его больше?) –
Патч, который вы ссылаетесь (Jire), будет работать, только если это только одно объявленное свойство, которое использует делегат, который передается как второй параметр. Нужно ли найти делегата для данного свойства, если есть два или более свойств с использованием одного и того же делегата? Я хотел бы иметь функцию, которая могла бы это сделать. Я попытался понять это, но я не думаю, что это возможно. –