- - PR -
Webサービスの戻り値のキャスト
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-04-26 17:27
public class MyType
{ int a; int b; } WebサービスはMyType型のデータを戻り値としています。 MyTypeはクラスライブラリ化しており、WebサービスとWebアプリでそれぞれ参照設定しています。 private void WSCall() { // WebService呼び出し localhost.MyService srv = new localhost.MyService(); localhost.MyType result = srv.GetData(); func((MyType)reslt); ←キャストでエラー } Webサービスの戻り値をクラスライブラリの関数にパラメータとして渡したいのです。 クラスライブラリには「MyType」が定義してあるので型を「localhost.MyType」 ではなく「MyType」として渡したいのですがどうすればいいのでしょうか? よろしくお願いします | ||||
|
投稿日時: 2007-04-27 01:35
がんふぃーるどです。お世話さまです。
Webサービスで使用しているWSDLはサービスのスキーマを定義しています。 ですので、WSDLから生成したプロキシクラスのMyType(local.MyType)とWebサービスの サーバ側で使用しているクラスライブラリのMyTypeはスキーマが同じだけでクラス としての互換性等は一切ありません。 というか、WSDLからプロキシクラスを生成したのであれば、クラスライブラリのMyTypeは Webアプリ側で必要ありません。funcメソッドの引数にはプロキシクラスのMyTypeを使うように すればいいです。 | ||||
|
投稿日時: 2007-04-27 07:52
名前空間も含めた型名を比較してみましょう。
_________________ | ||||
|
投稿日時: 2007-04-28 09:07
がんふぃーるどさんJittaさんどうもです。
やはり無理なんですね。 どうもありがとうございました。 | ||||
|
投稿日時: 2007-05-06 22:53
ああ、チェックしてなかった。 つか、どうして「無理」なんでしょう? いや、まぁ、やりたいことがデータの受け渡しではなく、データ型の受け渡しなら無理なんだけど。それでもタイプ コンバータを作るとか、方法が無いわけではないのですが。 _________________ | ||||
|
投稿日時: 2007-05-07 22:05
昔、試みたこと
一番いいところ、GDNJ へリンク張っていたのですが、GDNJ が閉鎖されている。やられた。。。コピーしておくんだったorz _________________ | ||||
|
投稿日時: 2007-05-07 22:26
Webサービスのプロキシでは、対象のWebメソッドのラップメソッドを、
リフレクションで取得して、その情報を元にオブジェクトを構築します。 なので、生成されたプロキシクラスのメソッドの戻り値の型などを、 手で修正してやると動くと思います。 ただし、プロキシを手で修正というのは本来あまりよい方法ではないのと、 ASP.NET環境でWeb参照を行っている場合は、プロキシも動的に生成されるように なったため、この方法は使えませんので注意が必要です。 --追記 戻り値ではなくて、パラメータの方でしたね。 --追記 パラメータではなくて、戻り値の方でしたね。 … 何言ってんだ… [ メッセージ編集済み 編集者: なちゃ 編集日時 2007-05-07 23:43 ] |
1