服务引用对象未序列化

本文关键字:序列化 对象 引用 服务 | 更新日期: 2023-09-27 18:33:49

WCF 服务引用中

定义的相当复杂的对象RequestList也是同一服务引用中方法的输入参数。XML已经在客户端生成,所以我们需要做的就是Xml序列化对象,然后反序列化客户端xml。尝试使用给定类型创建新XmlSerializer时引发异常。

XmlSerializer serializer = new XmlSerializer(typeof(RequestList));

抛出一个 InvalidOperationException:

Unable to generate a temporary class (result=1).
error CS0030: Cannot convert  type 'ServiceReference.Parameter[]' 
  to 'ServiceReference.Parameter'
error CS0029: Cannot implicitly convert type 'ServiceReference.Parameter' 
  to'ServiceReference.Paramter[]'

数组不应该很容易序列化吗?为什么会抛出此错误,我该如何解决它?

服务引用对象未序列化

我认为这里的问题与错误或其他东西没有直接关系。您可能正在使用一个对象,或者该对象具有无法使用 xml 序列化进行序列化的属性。例如,Dictionary<T>不能直接序列化;它给出错误;为了在XML序列化中使用Dictionary<T>,应该通过继承字典来实现IXmlSerializable接口。

情况可能并非如此,因为另一方面我不知道您要序列化什么。

我找到了问题所在。显然存在某种错误。在 RequestList 类的定义中,有一个带有双数组Parameter[][]的参数。显然这会导致问题。解决方法是使其成为单个数组:Parameter[] 。一旦我这样做了,它就完美地工作了。