WCF服务引用中定义的相当复杂的对象RequestList
也是同一服务引用中方法的输入参数。 XML已经在客户端生成,因此我们需要做的就是对象进行XmlSerialize,然后对客户端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[]'
阵列不应该很容易序列化吗?为什么会抛出此错误以及如何解决?
答案 0 :(得分:0)
我认为这里的问题与bug或其他东西没有直接关系。您可能正在使用对象,或者该对象具有无法使用xml序列化序列化的属性。
例如,Dictionary<T>
无法直接序列化;它给出了错误;为了在xml序列化中使用Dictionary<T>
,我们应该通过继承字典来实现IXmlSerializable接口。
情况可能并非如此,因为我不知道你试图在另一方面进行序列化。
答案 1 :(得分:0)
我发现了问题所在。显然有某种错误。在RequestList
类的定义中,有一个带有双数组Parameter[][]
的参数。显然这会导致问题。修复方法是将其设为一个数组:Parameter[]
。一旦我这样做,它就完美地运作了。