2012-05-11 8 views
0

WCFサービス参照で定義されたかなり複雑なオブジェクトRequestListも、同じサービス参照のメソッドの入力パラメータです。 XMLはすでにクライアント側で生成されているので、オブジェクトをXmlSerializeしてからクライアント側のXMLを逆シリアル化するだけです。指定された型の新しいXmlSerializerを作成しようとすると、例外がスローされます。サービス参照オブジェクトがシリアル化されていない

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

は、配列を簡単に、シリアライズすべきではない:

XmlSerializer serializer = new XmlSerializer(typeof(RequestList)); 

は、InvalidOperationExceptionがスローされますが?なぜこのエラーがスローされ、どのように修正できますか?

+3

は、RequestList、特にParameter [] field/propertyのペースト定義をplsできます。 –

+0

オブジェクトに循環参照が含まれているかどうかを確認したことが原因で失敗する可能性があります。また、コードXmlSerializerを試すser =新しいXmlSerializer(); ser.Serialize(obj、stream); xml文字列でストリームから読み取る場合は – Rajesh

答えて

0

問題が何かを発見しました。どうやら、ある種のバグがあります。 RequestListクラスの定義では、double配列Parameter[][]を持つパラメータがありました。どうやらそれは問題を引き起こす。この問題を解決するには、配列Parameter[]を1つ作成することです。私がこれをしたら、それは完全に働いた。

0

ここの問題はバグや何かに直接関係しないと思います。おそらくオブジェクトを使用しているか、そのオブジェクトにxmlシリアル化を使用してシリアル化できないプロパティがあります。 たとえば、Dictionary<T>は直接シリアル化することはできません。それはエラーを与える。 xmlシリアル化でDictionary<T>を使用するには、IXmlSerializableインターフェイスを実装する必要があります。

これはそうではないかもしれません。なぜなら、あなたはもう一方でシリアル化しようとしているのか分からないからです。

+0

辞書はありません。 int、bool、double、decimal、DateTime型の非常に大きな構造です。 DateTime型はシリアライズ可能ですね。 – SaulBack

関連する問題