- PR -

Web参照に対するインスタンスの一覧を取得する方法について

投稿者投稿内容
とら
ベテラン
会議室デビュー日: 2006/10/04
投稿数: 54
投稿日時: 2007-02-08 16:42
VisualStudio2005 C#
Oracle 9i
ODP.NET

上記の環境で開発を行っております。


Windowsアプリケーションから、Webサービスを呼び出すために、
プロジェクトに対してWeb参照を追加しているのですが、実行時に
呼び出し先のURLを変える必要が有りまして、以下のように記述
しております。

WinProj.localhost.TestWS1 myTestWS1;
myTestWS1 = new WinProj.localhost.TestWS1();
myTestWS1.Url = ServerPathString + "/ServerProjName/TestWS1.asmx";

WinProj.localhost.TestWS2 myTestWS2;
myTestWS2 = new WinProj.localhost.TestWS2();
myTestWS2.Url = ServerPathString + "/ServerProjName/TestWS2.asmx";

WinProj.localhost.TestWS3 myTestWS3;
myTestWS3 = new WinProj.localhost.TestWS3();
myTestWS3.Url = ServerPathString + "/ServerProjName/TestWS3.asmx";

実際に接続に行くサーバーは同じで使用するWebServiceがWindowsアプリケーション毎に
異なるため、この辺りの処理を個々のWindowsアプリケーション毎に書くのではなく、
お約束のようなコードを貼り付けるだけで実装できないかと考えました。

イメージとしては、

1.自分のWindowsFormに存在するWebServiceに対するインスタンスの
一覧を取得する。

2.個々インスタンスのURLのサーバー部分を書き換える。

ソースコード編集時にthis.と入力すると、そのコード内のオブジェクトが
一覧で出てきてガイドになりますが、このような情報が実行時に取得できれば
と思うのですが、何かご存知の方はいらっしゃいませんでしょうか?

よろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-02-08 18:22
タイトルが「一覧を取得する方法について」ということですが。
インスタンスは、おいてあるんでしょ?それが一覧じゃない?
_________________
とら
ベテラン
会議室デビュー日: 2006/10/04
投稿数: 54
投稿日時: 2007-02-08 18:50
引用:

Jittaさんの書き込み (2007-02-08 18:22) より:
タイトルが「一覧を取得する方法について」ということですが。
インスタンスは、おいてあるんでしょ?それが一覧じゃない?



確かにおっしゃるとおりなんですが、インスタンスのところは個別記述に
成ると思うんですけど、URL変更のところとかは、

foreach このクラスに定義されたインスタンス
___if (インスタンスのタイプがWeb参照だったら)
___{
______Web参照に対してUrl変更とかの処理を行う。
___}

みたいな定型記述でいけるのではないかと思ったのですが、自分で
考えている段階では、でき無そうだなという感覚だったので、
聞いてみた次第です。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-02-08 22:09
引用:

とらさんの書き込み (2007-02-08 18:50) より:

foreach このクラスに定義されたインスタンス
___if (インスタンスのタイプがWeb参照だったら)
___{
______Web参照に対してUrl変更とかの処理を行う。
___}

みたいな定型記述でいけるのではないかと思ったのですが、自分で
考えている段階では、でき無そうだなという感覚だったので、
聞いてみた次第です。


 前のもそうなんだけど、この、「このクラスに定義されたインスタンス」というのが、よくわかりません。

 たとえば次のクラスで、「このクラスに定義されたインスタンス」とは、何を指しますか?
コード:
class SampleClassA {
    private HogeClass hoge = new HogeClass();
    public HogeProperty {
        get { return hoge; }
    }

    public SampleClassA {
        using (Stream strm = new FileStream(...)) {
            ...
        }
    }
}


 SampleClassA のインスタンスが生成されると、SampleClassA のインスタンスと、HogeClass のインスタンス、そして、コンストラクタ実行中に FileStream クラスのインスタンスが生成されます。
 いったい、いつの時点で、どのインスタンスが取得したいのでしょう?


と書くより、「スコープを把握していますか?」の方が良かったりするのかもしれない。。。

どっちにしても、「foreach このクラスに定義されたインスタンス」で、何を列挙したいのかがわからない。
_________________
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-02-08 22:11
それとも、

どっかですべてのインスタンスを配列にしまっておけば、foreach で取り出せますよね?


の方が良いのかな?
_________________
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2007-02-08 22:38
おそらくMy用語が多いと思うので仰っている事が殆ど理解できません。ですので見当違いの事を言ったらすみません。
引用:

1.自分のWindowsFormに存在するWebServiceに対するインスタンスの
一覧を取得する。


の「インスタンス一覧」を「参照している Web サービスの一覧」と解釈します。つまり、Webサービスプロキシクラスの一覧と同義と捉えます。

引用:

2.個々インスタンスのURLのサーバー部分を書き換える。


「個々の Webサービスプロキシクラスのインスタンスの Url プロパティを http〜からドメイン部分まで書き換える」と解釈します。

引用:

ソースコード編集時にthis.と入力すると、そのコード内のオブジェクトが
一覧で出てきてガイドになりますが、このような情報が実行時に取得できれば
と思うのですが、何かご存知の方はいらっしゃいませんでしょうか?


インテリセンスの事でしょうか?ここは完全に理解できなかったので飛ばします。

と長々書きましたが、Visual Studio の Web 参照フォルダのプロパティで、Urlを「スタティック」にするか「ダイナミック」の指定ができるのはご存知でしょうか?それを使えば、App.config に Url を書けますがそれでは不十分ですか?
_________________
囚人のジレンマな日々
とら
ベテラン
会議室デビュー日: 2006/10/04
投稿数: 54
投稿日時: 2007-02-09 16:49
Jittaさん。囚人さん。

もしかすると、何かいい手が有るかもと思ったのですが、やはり、
個別記述にすることにします。

アドバイスありがとう御座いました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-02-09 18:32
わかった

リフレクションでプロパティやメソッドを一覧する感覚で、オブジェクトが参照するメモリを列挙したい、てか!

そりゃ、無理でしょ!?
_________________

スキルアップ/キャリアアップ(JOB@IT)