我试图想出一种编程方式来根据方法名称和参数程序化地创建一个Memcached的关键字。因此,如果我有一个方法:
string GetName(int param1, int param2);
它将返回:
string key = "GetName(1,2)";
我知道你可以使用反射获取MethodBase,但是如何获取字符串中的参数值,而不是参数类型?
我试图想出一种编程方式来根据方法名称和参数程序化地创建一个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 += ")";