Bon j’ai un petit problème. J’ai un nom de fonction dans une string. Genre:
strFunctionName = “CalculA”;
J’aimerais faire de telle sorte a ce que ma classe Calcul:
class Calcul
{
…
public bool Calcul(string strFunctionName)
{
}
private bool CalculA()
{
}
private bool CalculB()
{
}
}
Quand j’appelle Calcul, avec en paramètre ma chaine qui contient la fonction appelle la bonne fonction, soit CalculA, soit CalculB, etc…
J’aimerais tout de suite dire que je n’ai PAS envie d’utiliser un switch (qui bien que bête et méchant pourrait faire l’affaire dans ce cas la, mais pas dans mon projet global).
Quelqu’un aurait une solution?
Ps: je ne peux pas passer un autre type qu’un type comme string, ou type de base, parce que mon nom de fonction transite dans un paquet UDP…
[quote name=‹ skid › date=’ 6 Apr 2005, 13:52’]C’est ce qu’on appele de l’introspection, maintenant je me demande a quoi va te servir de passer le nom de la fonction dans une fonction
Une petite explication La
[right][post=« 347743 »]<{POST_SNAPBACK}>[/post][/right][/quote]
Bah les pointeurs sur fonction ce n’est pas neuf comme principe, et l’utilité n’en est plus à prouver. Ok ici ce n’est pas exactement un pointeur sur fonction et un simple switch ferait l’affaire, mais juste pour dire que ce n’est pas une approche stupide, loin de là. Je me rappelle que j’avais abusé de pointeurs sur fonction dans un client irc que j’avais codé en C. J’avais un tableau à 2 dimensions contenant le nom de commandes irc, et leur fonction associée dans mon programme. Du coup le mainloop tenait en très peu de lignes, et le code dans l’ensemble s’en trouvait pas mal simplifié.
Non je sais que c’est utile loin de moi l’idee de dire l’inverse (En java on s’en sert bcp ) mais dans son cas j eme demande si c’est la meilleure solution a utiliser c’est tout
Ben c’est que c’est un client qui dit a un serveur “fait la fonction A”, seulement, je ne sais pas lesquelles sont disponibles (pour d’obscures raisons que c’est pas moi qui programme la fonction A, B, C, ou whatever) donc c’est pour ca que je peux pas utiliser la fonction switch.