1

このオブジェクトを作成したオブジェクトを取得する簡単な方法はありますか?常に何らかのオブジェクトタイプになることはわかっていますがthis、コンストラクター内のように簡単に使用できるキーワードを期待していました。

おそらく不必要なコンテキスト:

PowerPointで作業しているこのアドインの単体テストを作成しています。位置やフォントサイズなどの情報を取得するために、1つ上のレベルに移動して親オブジェクトを確認する必要がある場合があります。これまで、これを回避しようとしました。

「モック」を編集して、各オブジェクトを作成するオブジェクトをその子に渡す別のコンストラクターを追加できると思います。しかし、私はそこにもっと良い解決策があるように感じます。また、これらのモックは、Visual Studios Tools for Officeによって提供されるインターフェイスを部分的に実装しており、それらのインターフェイスの一部はParentプロパティゲッター/セッターです。メソッドを実装しないとNotImplementedException、そのメソッドが呼び出されたときに新しいものがスローされます。

4

1 に答える 1

5

スタックから呼び出し元のメソッドを取得し、そこからクラス名を推測できます。

http://www.csharp-examples.net/reflection-calling-method-name/

ただし、これは、間にレイヤーがある場合、スタック内で気になる呼び出し元の位置がシフトするという意味で脆弱です。ただし、ロジックをユーティリティメソッドまたは拡張メソッドに配置すると、時間の経過とともに進化するのは難しくありません。

コールスタックのクエリはそれほど高速な操作ではありませんが、単体テストの場合はおそらく許容できます。

于 2012-05-17T03:15:19.373 に答える