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>直接シリアル化することはできません。エラーが発生します。xmlシリアル化で使用するにはDictionary<T>、ディクショナリを継承してIXmlSerializableインターフェイスを実装する必要があります。

一方、あなたが何をシリアル化しようとしているのかわからないので、これは当てはまらないかもしれません。

于 2012-05-11T14:49:18.043 に答える
0

問題が何であるかを見つけました。どうやら何らかのバグがあるようです。クラスの定義にRequestList、double 配列を持つパラメーターがありましたParameter[][]。どうやらそれが問題を引き起こしているようです。修正は、単一の配列にすることです: Parameter[]. これを実行すると、完全に機能しました。

于 2012-05-11T16:29:01.647 に答える