メソッド名とパラメーターに基づいて、Memcachedのキーをプログラムで作成する方法を試しています。だから私が方法を持っているなら、
string GetName(int param1, int param2);
それは戻ります:
string key = "GetName(1,2)";
リフレクションを使用してMethodBaseを取得できることは知っていますが、パラメータータイプではなく、文字列内のパラメーター値を取得するにはどうすればよいですか?
メソッド名とパラメーターに基づいて、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 += ")";