0

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

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

4

2 回答 2

0

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

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

于 2012-05-11T14:49:18.043 回答
0

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

于 2012-05-11T16:29:01.647 回答