Settingdust
10/18/2022, 7:23 AMencoder.encodeSerializableValue(serializers[0]!!(), value)
will error with type mismatch. Expected CapturedType(out X*>)
but X`<*>`. How to pass the value?
// An external class from lib
class X<T>
object XSerializer : KSerializer<X<Int>> {
override val descriptor: SerialDescriptor
get() = TODO("Not yet implemented")
override fun deserialize(decoder: Decoder): X<Int> {
TODO("Not yet implemented")
}
override fun serialize(encoder: Encoder, value: X<Int>) {
TODO("Not yet implemented")
}
}
// A map to take correct serializer by arg
val serializers: Map<Int, () -> KSerializer<out X<*>>> = mapOf(0 to { XSerializer })
object GenericSerializer : KSerializer<X<*>> {
override val descriptor: SerialDescriptor
get() = TODO("Not yet implemented")
override fun deserialize(decoder: Decoder): X<*> {
TODO("Not yet implemented")
}
override fun serialize(encoder: Encoder, value: X<*>) {
encoder.encodeSerializableValue(serializers[0]!!(), value)
}
}
There is a link testable. https://pl.kotl.in/VVNMv8Zso