C# WCF反序列化返回0个列表元素
我在反序列化对象时遇到一些问题 我有以下课程: 元数据存储: 问题是: 我使用输出参数将Metadatastore对象从我的服务器(运行wcf服务)传输到我的客户机。因此,我想这个输出参数的序列化/反序列化是由wcf自动完成的。 情况就是这样: 客户端调用该服务:C# WCF反序列化返回0个列表元素,c#,wcf,serialization,deserialization,microsoft-sync-framework,C#,Wcf,Serialization,Deserialization,Microsoft Sync Framework,我在反序列化对象时遇到一些问题 我有以下课程: 元数据存储: 问题是: 我使用输出参数将Metadatastore对象从我的服务器(运行wcf服务)传输到我的客户机。因此,我想这个输出参数的序列化/反序列化是由wcf自动完成的。 情况就是这样: 客户端调用该服务: service.GetChangeBatch(out metadatastore_object, otherValue); 服务器响应正确(metadatastore_对象已成功填充并序列化->无错误) 但我在客户端接收到的对象不正
service.GetChangeBatch(out metadatastore_object, otherValue);
服务器响应正确(metadatastore_对象已成功填充并序列化->无错误)
但我在客户端接收到的对象不正确:文件路径填写正确,但列表数据对象包含零个元素!我还检查了服务器,数据列表包含2个元素。另一件需要注意的奇怪事情是,它不是空的,它只是一个新创建的空列表。
如果有人有这方面的经验,我可以提供更多的代码,如果需要的话。
提前谢谢。欢迎Daan使用
CollectionDataContract
代替DataContract
这里是msdn关于CollectionDataContract
的解释:
可能是这一行:
private List<ItemMetadata> data = new List<ItemMetadata>();
私有列表数据=新列表();
这就是清空你的列表
此外,我还将使用DataContract标记ItemMetadata,并使用DataMember标记所有属性。还应将
ItemMetadata
类修饰为DataContract
,以便客户端了解该类型以及如何反序列化它。您还可以在wcf服务上启用详细的消息日志记录,以查看SOAP是什么xml正在从服务器返回
然后,您可以确定客户机是否未正确地将xml反序列化为对象,或者服务器是否未正确地将对象序列化为xml
HTH就是这样!我还必须将ItemMetadata类修饰为DataContract(如RoccoC5所说),并在客户端和服务器端为它们提供相同的名称空间。谢谢
service.GetChangeBatch(out metadatastore_object, otherValue);
private List<ItemMetadata> data = new List<ItemMetadata>();