Fonction qui récup tous les paramètres d'une méthode ?

Fonction qui récup tous les paramètres d'une méthode ? - C#/.NET managed - Programmation

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
Reply

Marsh Posté le 11-07-2005 à 16:56:59   

Reply

Marsh Posté le 11-07-2005 à 16:57:59    

Reflection ! Reflection ! Sinon bizarre ton truc :heink:

Reply

Marsh Posté le 11-07-2005 à 16:59:36    

J'ai pas tout compris là.

Reply

Marsh Posté le 11-07-2005 à 17:34:36    

Introspection ! Introspection ! Sinon bizarre ton truc :heink:

Reply

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.

Reply

Marsh Posté le 11-07-2005 à 17:56:17    

:heink:  [:alph-one]

Reply

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  

Reply

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 :
  1. Regex check = new Regex("[0-9]+" );
  2. if (check.IsMatch(attr.Value))
  3. {
  4.     MatchCollection matches = check.Matches(attr.Value);
  5.     if (matches.Count > 0)
  6.     {
  7.         // faire des trucs avec les matches[i].Value  
  8.     }
  9. }


Message édité par chagarou le 12-07-2005 à 01:28:08
Reply

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?

Reply

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 :p 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.

Reply

Marsh Posté le 12-07-2005 à 09:24:32   

Reply

Marsh Posté le 12-07-2005 à 09:32:56    

Bah y'a une solution, 2 sec

Reply

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" );
ZeFonction("pouet", "plop" );
etc...


:)
 
Attention au fait qu'un paramètre noté params doit être le dernier des paramètres

Reply

Marsh Posté le 12-07-2005 à 09:49:18    

FlorentG a écrit :

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" );
ZeFonction("pouet", "plop" );
etc...


:)
 
Attention au fait qu'un paramètre noté params doit être le dernier des paramètres


 
 
 
Voilà, c'est ce dont je parlais.

Reply

Marsh Posté le 12-07-2005 à 10:07:20    

hey :p
Ca m'a l'air d'être tout à fait ça, je vais tester.

Reply

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...

Reply

Marsh Posté le 12-07-2005 à 10:14:34    

Ah merde, dire que je me suis fais chier à chercher en C# :D Je développe aussi en VB.NET

Reply

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.

Reply

Marsh Posté le 12-07-2005 à 13:34:31    

La MSDN est ton amie ;)
 

Public Sub ZeFonction(ByVal ParamArray Pouet() As String)


Reply

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.
 
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.


params (ou ParamArray en VB) ?
 
edit: [:benou_grilled]


Message édité par Harkonnen le 12-07-2005 à 14:01:19

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

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 :)

Reply

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

Reply

Marsh Posté le 12-07-2005 à 15:29:23    

vi, je m'y force ... :)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed