リフレクションを使用してメソッド名とパラメーターを取得する
-
19-08-2019 - |
質問
プログラムに基づいて、 Memcached のキーをプログラムで作成する方法を試しています。メソッド名とパラメーター。メソッドがある場合、
string GetName(int param1, int param2);
それは以下を返します:
string key = "GetName(1,2)";
リフレクションを使用してMethodBaseを取得できることはわかっていますが、パラメータタイプではなく、文字列内のパラメータ値を取得するにはどうすればよいですか?
解決
探しているのはインターセプターです。名前が示すように、インターセプターはメソッド呼び出しをインターセプトし、メソッドが呼び出される前後に物事を実行できるようにします。これは、多くのキャッシュおよびロギングフレームワークで非常に人気があります。
他のヒント
リフレクションからメソッドのパラメーター値を取得することはできません。デバッグ/プロファイリングAPIを使用する必要があります。パラメーターの名前と型を取得できますが、パラメーター自体は取得できません。ごめん...
これは私が思いついたものです(ただし、特に効率的ではないかもしれません):
MethodBase method = MethodBase.GetCurrentMethod();
string key = method.Name + "(";
for (int i = 0; i < method.GetParameters().Length; i++) {
key += method.GetParameters().GetValue(i);
if (i < method.GetParameters().Length - 1)
key += ",";
}
key += ")";
所属していません StackOverflow