Question

J'essaie de trouver un moyen de créer par programme une clé pour Memcached , basée sur le nom de la méthode et les paramètres. Donc, si j'ai une méthode,

string GetName(int param1, int param2);

il reviendrait:

string key = "GetName(1,2)";

Je sais que vous pouvez obtenir la MethodBase en utilisant la réflexion, mais comment puis-je obtenir les valeurs de paramètres dans la chaîne, pas les types de paramètres?

Était-ce utile?

La solution

Ce que vous recherchez, c'est un intercepteur. Comme son nom l'indique, un intercepteur intercepte une invocation de méthode et vous permet d'effectuer des opérations avant et après l'appel d'une méthode. Ceci est assez populaire dans de nombreux frameworks de mise en cache et de journalisation.

Autres conseils

Vous ne pouvez pas obtenir les valeurs des paramètres de méthode à partir de la réflexion. Vous devrez utiliser l'API de débogage / profilage. Vous pouvez obtenir les noms et types de paramètres, mais pas les paramètres eux-mêmes. Désolé ...

C’est ce que j’ai proposé (mais cela n’est peut-être pas particulièrement efficace):

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 += ")";
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top