自分で作成したクラスを 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 にポリモーフィズムの概念は無いのかな???
2008年2月22日金曜日
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿