【发布时间】:2014-04-09 18:00:50
【问题描述】:
我有一个对象列表,我通过 WebAPI 返回并从同一个 WebApi 创建。如果它们是另一个类的一部分,那么我可以简单地用 DataContract 装饰它并且一切正常。
public class ParentClass()
{
[DataContract(Name = "Children", Namespace = "http://schemas.blah.blah"]
public List<ChildClass> Children
}
当我直接返回一个列表时会出现问题。当我这样做时,我会丢失 DataContract 名称和命名空间。
我可以创建另一个类
[DataContract(Name = "Children", Namespace = "http://schemas.blah.blah"]
public class ChildrenList : List<ChildClass>
{
}
并将我的父类更改为
public class ParentClass()
{
public ChildrenList Children
}
这解决了问题,但创造了更多。首先是我失去了做事的能力
ChildrenList results = getchildrenlistfromsomemethod();
results = results.OrderByDescending(p => p.Rank).ToList();
我可以用一个纯粹的列表来做。扩展列表也是不好的做法。我可以通过从 Collection 扩展来解决这个问题,但我仍然遇到上述问题,而且我失去了 AddRange() 方法。
我的问题是
1)有没有一种简单的方法可以让某个类型的 List 总是序列化到某个名称和命名空间?
2) 扩展列表是最好的选择,我只是在转换为列表、执行 orderby、groupby 等之间陷入困境......然后将项目重新添加到 foreach 循环中的新扩展列表中。 (似乎很昂贵)
3)我是否错过了一个非常明显且简单的方法来解决这个问题?
【问题讨论】:
标签: c# list serialization asp.net-web-api