我在反序列化对象时遇到了一些问题.
我有以下课程:
Metadatastore:
[DataContract] public class MetadataStore : IEnumerable<ItemMetadata> { private List<ItemMetadata> data = new List<ItemMetadata>(); private string folderPath = null; [DataMember] public string FilePath { // getter and setter } [DataMember] public List<ItemMetadata> Data { // getter and setter } }
ItemMetadata:
[Serializable()] public class ItemMetadata { // syncid,syncversion,uristring etc.. }
问题:
我正在通过使用输出参数将Metadatastore对象从我的服务器(运行wcf服务)传输到我的客户端.因此,我认为wcf会自动完成此输出参数的序列化/反序列化.
这是发生的事情:
客户端调用该服务:
service.GetChangeBatch(out Metadatastore_object,otherValue);
服务器响应正确(Metadatastore_object已成功填充和序列化 – >没有错误)
我在客户端收到的对象虽然不正确:FilePath填充正确,但List Data对象包含零元素!我还检查了服务器,数据列表包含2个元素.另一个值得注意的奇怪事情是它不是null,它只是一个新创建的空列表.
有人有这方面的经验,如果需要我可以提供更多代码.
提前致谢.迎接大安
解决方法
使用CollectionDataContract而不是DataContract.
这里是msdn关于CollectionDataContract的解释:
http://msdn.microsoft.com/en-us/library/aa347850.aspx
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。