Mit Reflexion erhalten Methodennamen und Parameter
-
19-08-2019 - |
Frage
Ich versuche, einen Weg zum Training zu programmatisch einen Schlüssel erstellen für Memcached , basierend auf der Methodenname und Parameter. Also, wenn ich habe eine Methode,
string GetName(int param1, int param2);
wäre es zurück:
string key = "GetName(1,2)";
Ich weiß, dass Sie die Method Reflexion mit bekommen, aber wie bekomme ich die Parameter-Werte in der Zeichenfolge, nicht die Parametertypen?
Lösung
Was Sie suchen ist ein Abfangjäger. Wie der Name schon sagt, fängt ein Abfangjäger einen Methodenaufruf und ermöglicht es Ihnen, die Dinge vor und nach einer Methode aufgerufen wird, durchzuführen. Dies ist sehr beliebt in vielen Caching und Logging-Frameworks.
Andere Tipps
Sie können keine Methode Parameterwerte aus der Reflexion erhalten. Sie müßten den Debugging / Profilerstellungs-API verwenden. Sie können die Parameternamen und -typen, aber nicht die Parameter selbst. Sorry ...
Das ist, was ich mit oben kommen (sie kann jedoch nicht besonders effizient sein):
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 += ")";