Используя отражение, чтобы получить имя метода и параметры
-
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 += ")";