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?

War es hilfreich?

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 += ")";
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top