Я хотел бы знать, что было бы масштабируемым решением при наличии json
с несколькими уровнями subtypes
, отображенными непосредственно на него или на property
.
[JsonConverter(typeof(JsonSubtypes),"Kind"]
[KnownSubType(typeof(A),"a"]
[KnownSubType(typeof(B),"b"]
public abstract class Root
{
public abstract string Kind{get;set;}
}
public class A:Root {
override Kind=>"a";
[JsonProperty]
public Prop prop{get;set;}
}
[JsonConverter(typeof(JsonSubtypes),"PropKind"]
[KnownSubtypes(typeof(P1),"p1"]
[KnownSubtypes(typeof(P2),"p2"]
public abstract class Prop
{
public abstract string PropKind{get;}
}
public abstract class P1:Prop
{
override PropKind=>"p1";
public int SomeValue{get;set;}
}
.Можно видеть, что у меня есть некоторые подтипы для моего корневого объекта, но у меня есть подтипы и для одного из его полей. В будущем мне может понадобиться больше уровней подтипов. Этот подход с раздутыми подтипами? Должен ли я просто использовать объекты и большой переключательдля каждого подтипа? Какой подход лучше?