Здравствуйте, мне было интересно, что было бы оптимальным подходом при десериализации списка объектов, которые могут быть:
public class KnownObject
{
public Payload payload{get;set;}
}
public class UnknownObject
{
public object payload {get;set} // ex:{ type=100 }
}
Для которого KnownObject
его поле payload
имеет вид:
public abstract class Payload{
public abstract int PType{get;}
}
public class PayloadA
{
override PType=>0;
}
public class PayloadB
{
override PType=>1;
}
И для UnknownObject
его payload
является json с PType
, которого нет в этом списке, например:
{payload:{ PType:103}}
Я решаю проблему с помощью KnownObject
с использованием Discriminated Unions
и JsonSubTypes
, но я не знаю, что делать с неизвестным Ptype-s
.
Мне нужно десериализовать на основе targetObject.payload.Ptype
, так как KnownObject
и UnknownObject
имеютэто поле.
Каким было бы оптимальное решение?
Я в основном хочу что-то вроде:
- Чтение
object.payload.type
- , если значение равнов моем списке
jsonsubtypes
: десериализовать до KnownObject
, до UnknownObject