加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 21:29:56 所属栏目:百科 来源:网络整理
导读:我在反序列化对象时遇到了一些问题. 我有以下课程: Metadatastore: [DataContract]public class MetadataStore : IEnumerableItemMetadata{ private ListItemMetadata data = new ListItemMetadata(); private string folderPath = null; [DataMember] pub
我在反序列化对象时遇到了一些问题.

我有以下课程:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读