Ответ 1
То, что вы ищете, - это перехватчик. Как и название, перехватчик перехватывает вызов метода и позволяет выполнять действия до и после вызова метода. Это довольно популярно во многих системах кэширования и ведения журналов.
Я пытаюсь разработать способ программирования для 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 += ")";