输出上的变量数组名称(c#)

输出上的变量数组名称(c#),c#,serialization,variant,C#,Serialization,Variant,我正在寻找在序列化时使用变量属性名的正确方法 示例输出: { "header": { "total": 3, "page": 1, "pagesize": 30 }, "cats": [ .. ] } 及 我希望数组的名称是可变的,并以某种方式分配给它。如果我正在创建一个猫的页面,我希望在输出上有名字“猫”,如果我正在创建一个狗的页面,我希望在输出上有名字“狗”。我使用一个类来表示这样一个页面,其中包含一个

我正在寻找在序列化时使用变量属性名的正确方法

示例输出:

{
    "header": {
        "total": 3,
        "page": 1,
        "pagesize": 30
    },
    "cats": [
    ..
    ]
}

我希望数组的名称是可变的,并以某种方式分配给它。如果我正在创建一个猫的页面,我希望在输出上有名字“猫”,如果我正在创建一个狗的页面,我希望在输出上有名字“狗”。我使用一个类来表示这样一个页面,其中包含一个事物列表(狗或猫)。目前,我正在复制该类,唯一的变体是数组的名称,这似乎有点不正常

T.I.A.很多

编辑2:

如果有2个页面,为什么不将数组设为泛型,调用类似于“data”,并将Cat和Dog页面绑定到data属性

Header.cs

public class Header
{
 public int Total { get; set; }
 public int Page { get; set; }
 public int PageSize { get; set; }

}
public class Page
{
 public Header Header { get; set; }
 public object[] Data { get; set; }
}
Page.cs

public class Header
{
 public int Total { get; set; }
 public int Page { get; set; }
 public int PageSize { get; set; }

}
public class Page
{
 public Header Header { get; set; }
 public object[] Data { get; set; }
}

这就是我们提取变体并修复它的方法:

public class ListView<T> : Dictionary<string, object> where T : IDomainObjectBase
{
    public ListView(DTOList<T> dto, ICallContext context, string name, IEnumerable<object> items)
    {
        this.Add("header", new ViewListHeader(dto.Total, dto.Page, dto.PageSize, context.LocalPath));
        this.Add(name, items.ToList());
    }
}
公共类ListView:字典,其中T:IDomainObjectBase
{
公共列表视图(DTOList dto、ICallContext上下文、字符串名称、IEnumerable项)
{
Add(“header”,newviewlistheader(dto.Total,dto.Page,dto.PageSize,context.LocalPath));
this.Add(name,items.ToList());
}
}

所以我们现在用的是字典,亲爱的

您对如何序列化有什么要求吗?您是序列化以将其保存到文件中,还是序列化以用于网络?我不能完全肯定问题是什么。“on output”是什么意思?很抱歉,这是关于在web api上下文中使用json.net作为序列化程序的,很抱歉让您失望,但不是,这是关于提取变体Dogs Cats(假设我有一个对象列表,它是关于该列表的数组名称)属性的名称也是将被序列化的名称。请参见我的编辑:[JsonProperty(PropertyName=“FooBar”)]我一直在尝试使PropertyName的值与内容一致(对于狗,请说“Dogs”,对于猫,请说“Cats”)但是没有找到方法,所以我试图摆脱重复上课的习惯,只上一节课,所以CatPage和DogPage将成为一页页,它将根据列表中的内容生成“猫”或“狗”