6

Method で使用される変数を取得するにはどうすればよいですか?その値を Console に書き込みますか?

4

2 に答える 2

5

それはいけません。リフレクションは、メソッド変数の値の読み取りには拡張されません。変数の宣言メタデータのみを処理します。それでも、宣言したはずの変数がコンパイラによって削除されている可能性があります。リフレクションは、フィールド(インスタンス / 静的型変数)へのフル アクセスを許可しますが、メソッド変数へのアクセスは許可しません。

ラムダ式のように使用できるトリックがありますが、これは形式を(メソッド変数からインスタンス フィールドに) 変更します。

于 2012-08-04T08:39:07.423 に答える
3

可能だとは思いませんが、IL コードを掘り下げて Method.Body を見ると、. 使用されている一時的なローカル変数について知ることができます。

しかし、すべてのシンタックス シュガーがなくなってしまったので、temp と変数を区別するのは難しいでしょう。

更新: この質問を検索中に Jus が見つかりました。それが機能するかどうかはわかりません。

System.Diagnostics.StackFrame stackFrame = new System.Diagnostics.StackFrame();
 System.Reflection.MethodBase methodBase = stackFrame.GetMethod();

 methodBase.GetParameters(); //Array of System.Reflection.ParameterInfo[]
 methodBase.GetMethodBody().LocalVariables; //List of Local variables declared in the body
于 2012-08-04T09:18:55.087 に答える