2

リフレクションを使用して、呼び出し元のメソッドのクラスのインスタンスを取得することは可能ですか?

Webサービスが着信コールのタイムアウト値を渡すためのソリューションを「ハック」しようとしています(WSEを使用して新しいWebサービスを呼び出すWebサービスを呼び出すとき。クライアントが5分のタイムアウトと次のレベルを設定すると最悪ですデフォルトの 100 秒のみ、またはその逆です。)

プロキシ インスタンスが .SetProxy(...) を呼び出すと呼び出されるカスタム ポリシーを既に取得しています。これは私がアクセスしたいインスタンスですが、これのコーディングを開始できるポリシー コードは 3 つの「レベル」の下にあります。

それで、スタックトレース getmethod を 2 レベル上で実行すると、どのような方法でもそのインスタンスを取得できるのでしょうか? これまでのところ、インスタンスではなく、そのクラスの Type しか取得できませんでした。

4

1 に答える 1

0

私は WSE には詳しくありませんが、リフレクションについてはよく知っています。インスタンスを取得するには、その参照または参照への参照を持つものが必要です。呼び出しオブジェクトを参照として持つクラスが見つかった場合は、Reflection.GetField、Reflection.GetProperty、および/または Reflection.GetMethod を使用して値を取得します。保護されたフィールドを持つ5つのレイヤーを通過することを意味しても、そこに足を踏み入れることができる限り、それを見つけることができます. しかし、それが別のスレッドまたは exe のスポーンのような完全な中断であり、識別情報が渡されない場合は、運が悪いです。外部ソースを使用して必要なタイムアウトを保存し、呼び出しの両側でそれを参照する必要があります。Red Gate .Net Reflector を使用して、参照用のクラスを調べます。

于 2010-02-23T00:17:40.447 に答える