Inheritance Json.NET和对象集合,其中对象是类层次结构的一部分?

Inheritance Json.NET和对象集合,其中对象是类层次结构的一部分?,inheritance,json.net,Inheritance,Json.net,我有以下情况(关于这个问题): 文档类 一个文档可以包含多种类型的项目 就像这个节目: 但这会产生以下Json: { "items": { "$type": "System.Collections.Generic.List`1[[UserQuery+Item, LINQPadQuery]], mscorlib", "$values": [ 这不是我想要的,因为它指定了列表的类型,但不是每个项目的类型,但是我似乎不知道是否可以以及如何做到这一点 因此,我需要以下类型的Js

我有以下情况(关于这个问题):

  • 文档类
  • 一个文档可以包含多种类型的项目
就像这个节目:

但这会产生以下Json:

{
  "items": {
    "$type": "System.Collections.Generic.List`1[[UserQuery+Item, LINQPadQuery]], mscorlib",
    "$values": [
这不是我想要的,因为它指定了列表的类型,但不是每个项目的类型,但是我似乎不知道是否可以以及如何做到这一点

因此,我需要以下类型的Json:

{
  "items": [
    {
      "$type": "UserQuery+ItemA, LINQPadQuery",
      "name": "Test Name"
    },
    {
      "$type": "UserQuery+ItemB, LINQPadQuery",
      "value": 42
    }
  ]
}

我是否需要引入一个具有类型为
Item
的简单属性的包装器对象,并启用该属性?

很接近了。尝试使用
ItemTypeNameHandling
而不是
TypeNameHandling

[JsonProperty("items", ItemTypeNameHandling = TypeNameHandling.All)]
public List<Item> Items = new List<Item>();
[JsonProperty(“items”,ItemTypeNameHandling=TypeNameHandling.All)]
公共列表项=新列表();

没问题。很乐意帮忙。
{
  "items": [
    {
      "$type": "UserQuery+ItemA, LINQPadQuery",
      "name": "Test Name"
    },
    {
      "$type": "UserQuery+ItemB, LINQPadQuery",
      "value": 42
    }
  ]
}
[JsonProperty("items", ItemTypeNameHandling = TypeNameHandling.All)]
public List<Item> Items = new List<Item>();