Используя отражение, чтобы получить имя метода и параметры

StackOverflow https://stackoverflow.com/questions/471693

Вопрос

Я пытаюсь найти способ программно создать ключ для 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