在WCF传输时IEnumerable集合被清除

时间:2013-01-08 12:04:21

标签: c# wcf collections ienumerable

我有一个类(比如CustomClass),它的属性很少IEnumerable<Enum>

CustomClass的对象传递给WCF并返回Result类型的对象(不同类型)。

如果我在WCF完成所有操作后检查CustomClass参数并将响应发送回客户端,CustomClass参数具有该值,但是当响应到达客户端时,对象CustomClass清除该List属性的所有内容。

我只是想知道,为什么?

Custom类的结构是

 public class QuerySearchCriteria 
 {       
    [DataMember]
    public string DScope { get; set; }

    [DataMember]
    public IEnumerable<SOURCE> Sources { get; set; }

    [DataMember]
    public IEnumerable<ETYPE> ETypes { get; set; }

    [DataMember]
    public IEnumerable<Score> Score{ get; set; }       
}

一切顺利,但Score属性中的项目已删除。

1 个答案:

答案 0 :(得分:0)

根据您提供的信息进行猜测,但Score是一个可序列化的类?在WCF中,枚举会自动包含在内,因为它们已标记为Serializable ,除非您已使用DataContract手动标记了枚举类型类。在这种情况下,您需要将枚举的每个成员标记为EnumMember。这个SO question and answer很好地解释了它是如何工作的。

如果我猜错了:)那么你应该启用WCF tracing并发布服务创建的肥皂,以获得有关正在发生的事情的更多细节。另外,发布Score课程的来源会很有帮助。