質問

プログラムに基づいて、 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 += ")";
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top