微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – WCF反序列化返回0个列表元素

我在反序列化对象时遇到了一些问题.

我有以下课程:

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 举报,一经查实,本站将立刻删除。

相关推荐