4

我正在使用WCF WebAPI使用 WCF编写 REST 服务。我将我的 POCO 类作为 json/xml 对象从我的服务中返回。我的大多数 POCO 类都包含ICollections,因为它们是 EF4.1 Code First 的一部分,因此出现错误:

无法序列化类型的成员 ... System.Collections.Generic.ICollection ... 因为它是类型 - 因为它是一个接口

为了避免这种情况XMLIgnore建议而且WCF 中 JSON 的自定义序列化也存在一些问题。ScriptIgnore

只是想有人可能遇到过类似的问题,并且有更好的解决方案或配置序列化类的方法,否则我将不得不用XMLIgnore等装饰每个这样的属性。

4

4 回答 4

3

通常情况下,您可能会使用 DTO 或(在 ASP.NET MVC 中查看模型)与域模型分离。您可以使用 AutoMapper 来最小化域模型和 DTO 之间的代码转换。

于 2011-08-08T12:11:40.350 回答
2

您必须添加 [XmlIgnore] 和 [IgnoreDataMember]。然后对于 xml 和 json 响应,该属性将被忽略。

于 2011-10-13T11:09:37.797 回答
1

那是正确的桑德罗,[IgnoreDataMember]并且[XmlIgnore]是需要的。

稍微解释一下: [IgnoreDataMember]json序列化 [XmlIgnore]中需要排除字段,xml序列化中需要排除字段。

于 2011-11-29T11:56:59.250 回答
0

我发现在 WCF WebAPI 中 [ScriptIgnore]或者[JsonIgnore]不工作并且没有任何效果,所以我将回到 ASP.NET MVC 以获取与 json 相关的 REST API。

更新[2012 年 7 月 24 日] 这个答案是旧的,并且 Microsfot WebAPI 已经走了很长一段路,请在依赖这个答案之前检查。

于 2011-08-06T04:47:10.590 回答