c# - IEnumerable 集合在 WCF 传输时被清除

标签 c# wcf collections ienumerable

我有一个类(比如 CustomClass),它有几个 IEnumerable<Enum> 类型的属性.

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

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

我只想知道,为什么?

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 中的项目属性被删除。

最佳答案

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

如果我猜错了 :) 那么你应该启用 WCF tracing并发布服务正在创建的 soap 以获取有关正在发生的事情的更多详细信息。此外,发布 Score 类的源代码也会有所帮助。

关于c# - IEnumerable 集合在 WCF 传输时被清除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14214551/

相关文章:

c# - 集合被修改;枚举操作可能无法执行

.net - Windows AppFabric 自动启动未启动 WCF 服务

Java集合/映射应用方法等效?

java - 如何使用集合在java中按对象分组?

c# - WPF 中的图像变得模糊

C# 奇怪的 lambda 行为

c# - 我可以在构建机器中运行 C# 内置单元测试吗?

c# - 永不结束 while 循环

asp.net - 如何在 WCF 服务中返回值后继续处理

c# - .Net 中的“字典类型”