我正在尝试一种基于方法名称和参数以编程方式为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 += ")";