Json 如何反序列化类型信息在其外部的对象

Json 如何反序列化类型信息在其外部的对象,json,deserialization,discriminated-union,Json,Deserialization,Discriminated Union,我有一个父类类型,其中一个字段是判别联合(JsonSubTypes)。在下面的示例中,我将判别联合(id)保留在我的子字段中。 我想知道的是:discriminant是否可以在我的子对象之外直接在父对象中 什么有效 public class Parent{ Child childField{get;set;} } [JsonConverter(typeof(JsonSubTypes),CHILDTYPE)] [JsonSubTypes.KnownSubTypes(typeof(Chil

我有一个
父类
类型,其中一个字段是
判别联合
JsonSubTypes
)。在下面的示例中,我将
判别联合
(id)保留在我的子字段中。 我想知道的是:
discriminant
是否可以在我的
子对象之外直接在父对象中

什么有效

public class Parent{
    Child childField{get;set;}
}

[JsonConverter(typeof(JsonSubTypes),CHILDTYPE)]
[JsonSubTypes.KnownSubTypes(typeof(Child1),CTYPE.Child1)]
[JsonSubTypes.KnownSubTypes(typeof(Child2),CTYPE.Child2)]
public abstract class Child{

    public enum Discriminator{
        Child1=0,
        Child2=1
    }

    private const string CHILDTYPE="childType";

    [JsonProperty(CHILDTYPE)]
    public abstract  Discriminator Kind{get;} //i want this moved to parent

}
public class Child1:Child{
    public int Value{get;set;}
    public override Kind=>Discriminator.Child1;
}
public class Child2:Child{
    public bool Value{get;set;}
    public override Kind=>Discriminator.Child2;
}
用法

List<Parent>parents=new List<Parent>{new Child1{Value=3},new Child2{Value=True}};
var str=JsonConvert.SerializeObject(parents);
List<Parent>parents=JsonConvert.DeserializeObject<List<Parent>(str);
正如您所看到的,我希望
我的
种类
字段从
子项
移动到
父项
中。我能以某种方式实现这一点吗?我想保持一切不变,而不是像这样的
Json

{
    childField:{ Kind:3}
}
 {
    Kind:3
    childField:{}
}
我需要适应这样的json:

{
    childField:{ Kind:3}
}
 {
    Kind:3
    childField:{}
}
我能做到这一点吗?我是否可以通过某种方式装饰父级,使其知道如何基于另一个字段反序列化其一个字段