使用反射来获取方法的名称和参数
-
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 += ")";
不隶属于 StackOverflow