Fonction qui récup tous les paramètres d'une méthode ? - C#/.NET managed - Programmation
Marsh Posté le 11-07-2005 à 17:54:35
Juste que la personne qui va utiliser mon truk souhaite envoyer directement des états (en gros des string) comme ça, sans s'emmerder à déclarer un tableau d'états par exemple, pour l'envoyer à la méthode.
Donc moi derrière, faut que je récup à la volée les paramètres de la méthode dont le nombre peut être variable. Il peut balancer un seul état comme 10 d'un coup.
Je sais que c'est un peu naz et c'est aussi un peu se faire chier pour rien, mais il aimerait ça !
Donc je demande vu que j'ai rien trouvé sur le sujet.
Marsh Posté le 11-07-2005 à 18:36:34
si j ai bien compris ton pb voila une solution de bricolage :
tu peux concatener tous les string en les separant par une virgule
a cote tu fais une fonction qui va te permettre de d'extraire tes parametres un a un de cette grosse chaîne
Marsh Posté le 12-07-2005 à 01:25:15
Pas totalement sur d'avoir compris la chose mais te faudrait pas un truc du genre:
Code :
|
Marsh Posté le 12-07-2005 à 08:57:36
Bah ta fonction tu la définie avec comme param un tableau d'Object et tu recupère tes strings dedans, non?
Marsh Posté le 12-07-2005 à 09:24:32
Pour la regexp, on va oublier car c vraiment très crado comme solution.
Sinon oui cesarr, sauf que ce qui l'emmerde (au gars qui va utiliser la méthode), c'est de déclarer un tabeau avant l'appel de la méthode.
En clair, il veut un et un seul appel avec x paramètres différents, et derrière faut que ça marche. Donc à part avoir une fonction du genre GetParamFunction() si elle existait, je vois pas comment faire. Mais visiblement ça n'existe pas.
J'ai essayé plusieurs truks, genre en déclarant comme param un tableau de string, et d'envoyer à la fonction plusieurs string séparés, peut être avec un coup de bol, il les aurait placé dans le tableau Un peu comme les argv qu'on passe à un programme.
Bref si ça n'existe pas, tant pis, il déclarera bel et bien un tableau de string que j'enverrais à la méthode.
Marsh Posté le 12-07-2005 à 09:35:40
Citation : Un paramètre déclaré avec un modificateur params est un tableau de paramètres. Si une liste de paramètres formels comprend un tableau de paramètres, celui-ci doit être le dernier paramètre dans la liste et correspondre à un type tableau à une seule dimension. |
du coup ça donne genre :
void ZeFonction(params string[] args) { |
Et l'appel :
ZeFonction("pouet" ); |
Attention au fait qu'un paramètre noté params doit être le dernier des paramètres
Marsh Posté le 12-07-2005 à 09:49:18
FlorentG a écrit :
|
Voilà, c'est ce dont je parlais.
Marsh Posté le 12-07-2005 à 10:13:17
Hum, j'avais même pas fait gaffe que c'était en C#. Du coup, mon VB.NET n'aime pas trop la syntaxe.
Suis en train de chercher une correspondance en vb...
Marsh Posté le 12-07-2005 à 10:14:34
Ah merde, dire que je me suis fais chier à chercher en C# Je développe aussi en VB.NET
Marsh Posté le 12-07-2005 à 12:32:46
Bon ben c mystérieux...
Ya peut être une soluce avec ParamArrayAttribute mais c'est assez confus, j'ai du mal à piger comment ça marche.
Marsh Posté le 12-07-2005 à 13:34:31
La MSDN est ton amie
Public Sub ZeFonction(ByVal ParamArray Pouet() As String) |
Marsh Posté le 12-07-2005 à 13:59:54
lalex a écrit : Juste que la personne qui va utiliser mon truk souhaite envoyer directement des états (en gros des string) comme ça, sans s'emmerder à déclarer un tableau d'états par exemple, pour l'envoyer à la méthode. |
params (ou ParamArray en VB) ?
edit:
Marsh Posté le 12-07-2005 à 14:14:26
!
Décidément, je m'y ferais jms à la msdn. J'ai cherché tte la matinée, impossible de tomber sur ce mot-clé. Merci bcps en tout cas, c'est bien ce que je voulais
Marsh Posté le 12-07-2005 à 14:22:30
Entraîne-toi tout de suite à utiliser la MSDN, 95% des problèmes y trouvent réponse
Marsh Posté le 11-07-2005 à 16:56:59
Existe-il une fonction en VB.NET capable de me retourner tous les paramètres d'une méthode ?
Ca m'éviterait de déclarer un tableau de string par exemple, pour l'envoyer dans une fonction, mais plutôt d'écrire quelque chose du genre : fonction("str1", "str2"...).
thx
Message édité par lalex le 11-07-2005 à 16:57:29