10

メソッド名とパラメーターに基づいて、Memcachedのキーをプログラムで作成する方法を試しています。だから私が方法を持っているなら、

string GetName(int param1, int param2);

それは戻ります:

string key = "GetName(1,2)";

リフレクションを使用してMethodBaseを取得できることは知っていますが、パラメータータイプではなく、文字列内のパラメーター値を取得するにはどうすればよいですか?

4

3 に答える 3

15

リフレクションからメソッド パラメーター値を取得することはできません。デバッグ/プロファイリング API を使用する必要があります。パラメータの名前と型は取得できますが、パラメータ自体は取得できません。ごめん...

于 2009-01-23T07:31:18.300 に答える
4

あなたが探しているのはインターセプターです。名前が示すように、インターセプターはメソッド呼び出しをインターセプトし、メソッドが呼び出される前後に何かを実行できるようにします。これは、多くのキャッシングおよびロギング フレームワークで非常に一般的です。

于 2009-01-23T07:35:23.800 に答える
-3

これは私が思いついたものです(ただし、特に効率的ではない場合があります):

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 += ")";
于 2009-01-23T03:04:36.390 に答える