我有一个对象列表,我通过WebAPI返回并从同一个WebApi创建。如果它们是另一个类的一部分,那么我可以使用DataContract简单地装饰它,并且一切运行良好。
public class ParentClass()
{
[DataContract(Name = "Children", Namespace = "http://schemas.blah.blah"]
public List<ChildClass> Children
}
当我直接返回List时会出现问题。当我这样做时,我丢失了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)将List扩展为最佳选项,我只是在转换为列表,执行orderby,groupby等之间插入....然后将项目添加回foreach循环中的新扩展列表中。 (似乎代价高昂)
3)我是否错过了解决此问题的一种非常明显且简单的方法?
答案 0 :(得分:0)
尝试使用支持字段声明List:
[DataContract(Name = "Children", Namespace = @"http://schemas.blah.blah"])
private ChildClass _children;
public List<ChildClass> Children
{
get { return _children; }
set { _children = value }
}