我有一个类(比如 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/