服务引用对象未序列化
本文关键字:序列化 对象 引用 服务 | 更新日期: 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[]
。一旦我这样做了,它就完美地工作了。