Skip to main content
 首页 » 编程设计

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

2024年01月01日37mengfanrong

我有一个类(比如 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 类的源代码也会有所帮助。