2008年2月22日金曜日

WebServiceとして定義されているメソッドの引数の型について

自分で作成したクラスを WebService として定義されたメソッドの引数とした場合、実際にアプリケーションから呼び出そうとすると、 WebReferences 配下のフォルダ名が、その引数のネームスペースとして先頭についてしまう。これは VisualStudio が Reference.vb を自動生成した事による。回避策としては、 Reference.vb ファイルを手動で書き直すこと。

ex)

自作クラス:Nao.Hoge
WebServiceメソッド:GetName(Nao.Hoge obj)
WebReferences 配下のフォルダ名:Men

とした場合に、

Nao.Hoge obj = new Nao.Hoge()

GetName(obj)

とするとエラーとなってしまう。

Reference.vb 内で、 GetName(Men.Nao.Hoge obj) と定義されているため。

どうやら ArrayList 型を引数としても、Object 型に自動変換されるようで・・・。加えて、引数の型をスーパークラスとして、実際にはサブクラスを引き渡した場合も、型が不一致のためエラーとなってしまいます。

WebService にポリモーフィズムの概念は無いのかな???

0 件のコメント: