服务引用对象不是序列化

时间:2012-05-11 14:42:39

标签: c# wcf xml-serialization

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[]'

阵列不应该很容易序列化吗?为什么会抛出此错误以及如何解决?

2 个答案:

答案 0 :(得分:0)

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

情况可能并非如此,因为我不知道你试图在另一方面进行序列化。

答案 1 :(得分:0)

我发现了问题所在。显然有某种错误。在RequestList类的定义中,有一个带有双数组Parameter[][]的参数。显然这会导致问题。修复方法是将其设为一个数组:Parameter[]。一旦我这样做,它就完美地运作了。