Вы можете получить параметры конструктора, получив primaryConstructor и затем valueParameters, и поскольку первичный конструктор не требуется для класса kotlin, мы можем сделать что-то вроде этого
inline fun <reified T : Any> KClass<T>.getProperties(): Iterable<KParameter> {
return primaryConstructor?.valueParameters ?: emptyList()
}
, поэтому, если мы будем запрашивать свойства класса Foo
val properties = Foo::class.getProperties()
properties.forEach { println(it.toString()) }
мы получим
parameter #0 bar of fun <init>(kotlin.Int): your.package.Foo
, и результатом будет не KProperty, а KParameter, который может быть более согласован с вашим вариантом использования