C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 43 を表示中)
■22745 / )  クラス名を変更するとDeserialize()でエラーが発生
□投稿者/ セラナ太郎 (1回)-(2008/07/31(Thu) 11:27:34)

分類:[C#] 

WebサービスをVisualStudio2003で作っています。
「Webサービス仕様」
1)WebサービスクラスからHTTP(REST)メッセージを投げる。
2)返答としてXMLを受信する。
3)受信したXMLをXmlSerializer:Deserialize()する。



クラスの簡単な構成は以下の通りで問題なく動作しています。
●クラス構成
##xsd.exeによる自動生成クラス##
逆シリアル化対象クラス。(受信したXMLメッセージをこのクラスに逆シリアル化する。)
public partial class PriceInfo : XMLBase123
{
}

##逆シリアル化対象クラスの規定クラス。(ポリモーフィズム用)##
abstract public class XMLBase123
{
}

##Webサービスクラス##
public class REST24 : System.Web.Services.WebService
{
protected XMLBase123 sendRequestCore(string strURL, string strParam, string strEncoding, string strOption)
{
1)HTTPリクエスト送信
2)返答XMLメッセージ受信
3)Deserialize()実行
XMLBase123 objXML = (PriceInfo)serializerXML.Deserialize(readerXML);
4)後処理

return objXML;
}
}

簡単なクラス説明ですが、現在クラス構成で問題なく動作しています。
ただし、上記"逆シリアル化対象クラス"のPriceInfoクラス名を変更すると、"Webサービスクラス"のDeserialize()実行時にエラーが発生します。(コンパイルは問題なし。)

##クラス名PriceInfoをPriceInfo3に変更した場合のエラー##
------------------------------------------------
System.InvalidOperationException: XML ドキュメント (2,2) でエラーが発生しました。 ---> System.InvalidOperationException: <PriceInfo xmlns=''> は指定できません。
場所 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPriceInfo3.Read5_PriceInfo3()
--- 例外スタック トレースの最後 ---
場所 System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
場所 System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle)
場所 System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader)
------------------------------------------------

上記PriceInfoクラス名を変更してもDeserialize()実行時エラーが発声しないようにする方法はありますでしょうか?

解決方法などわかりましたら、ご教授いただければ幸いです。
よろしくお願い致します。


●追記事項
・PriceInfo名を変更する目的は、xsd.exeで自動生成したクラスに同一名クラスが存在するためです。
・上記WebサービスクラスREST24で、xsd.exeで自動生成した複数の逆シリアル化対象クラスを使用することを目的としています。


返信 編集キー/


管理者用

- Child Tree -