Obtenir liste paramètres

Résolu
yzru Messages postés 6 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 3 mai 2007 - 3 mai 2007 à 11:46
yzru Messages postés 6 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 3 mai 2007 - 3 mai 2007 à 18:24
Une petite colle sur une fonction que je cherche …



Public void mafonction(int a,string b)
{
  object[] o = GetCurrentParameters();
  // o[0] == a
  // o[1] == b
}


Est-ce que vous savez comment réaliser cette fonction GetCurrentParameters() ?
La Reflection ne permet d'obtenir que leur noms leurs types, mais pas leur valeurs …

9 réponses

leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
3 mai 2007 à 16:00
ca me semble difficillement réalisable (je vois rien dans la reflexion pour ca)...
En fait, disons que pour récupérer les valeurs des paramètres d'une méthode il faudrait une "instance de cette méthode" ce qui n'a pas tellement de sens....
Une solution qui me vient comme ca (folklorique et lourd pour pas grand chose a mon avis) pourrait être reflexion+code dom :
générer le code de l'appel a la méthode à la volée....
Enfin cest une sacré moulinette bien lourde pour juste une question de flemme de codage....mais juste par réflexion....bah a moins de pouvoir taper directement dans la stack et voir tout ce qui a été push en tant que paramètre de la méthode je vois pas
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
3 mai 2007 à 12:27
Salut, je ne vois pas bien ce que tu veux faire, ils n'ont pas de valeur tant qu'on n'entre pas dans la fonction..
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
3 mai 2007 à 13:02
public void mafonction(params object[] o)
{

}

ca te permet d'appeler ta fonction
mafonction(a, b, c, d);

est ce que ca résout ton soucis?
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
3 mai 2007 à 13:35
Euh, peut-être récupérer des informations sur la méthode? le nom des variables? leurs type?
Si c'est ça, regarde du côté de Reflection et de MethodInfo...

<hr />
-Blog-
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yzru Messages postés 6 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 3 mai 2007
3 mai 2007 à 13:59
En fait mon but est que la fonction s'appelle elle-même dans un autre thread et ca marche très bien en créant un tableau d'objets initialisé avec la liste des paramètres.
Ici, m_ThreadInvoker est un objet que j'ai contruit qui permet de sérialiser les appels et de les exécuter dans un thread à part.

Public void mafonction(int a,string b)
{
  object[] parameters = new object[] {a,b};
  m_ThreadInvoker.Invoke(MethodInfo.GetCurrentMethod(),this,parameters);
}

L'objectif est de ne pas avoir à écrire
  object[] parameters = new object[] {a,b};
car j'ai beaucoup de méthodes à modifier et il faut donc que j'adapte le code à chacune des méthodes, ce qui est source d'erreur alors qu'un code générique m'éviterait tout problème, d'où le besoin de le remplacer par :
  object[] parameters = GetCurrentParameters();
0
yzru Messages postés 6 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 3 mai 2007
3 mai 2007 à 14:06
Un ajout pour ceux que ca dérangerait :

Public void mafonction(int a,string b)
{
   if(Thread.CurrentThread != m_ThreadInvoker.Thread)
  {
    object[] parameters = new object[] {a,b};
    m_ThreadInvoker.Invoke(MethodInfo.GetCurrentMethod(),this,parameters);
    return;
  }
  // code de la fonction ...
}
0
yzru Messages postés 6 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 3 mai 2007
3 mai 2007 à 14:49
cette solution n'est pas celle que je recherche car cela m'obligerait à réécrire les signatures de toutes mes méthodes, mais elle me permettrait bien d'obtenir un tableau de mes paramètres.



http://www.csharpfr.com/auteurdetail.aspx?ID=311556
public void mafonction(params object[] o)
{

}
0
yzru Messages postés 6 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 3 mai 2007
3 mai 2007 à 14:51
Une solution serait de pouvoir avoir la liste des variables locales avec leurs valeurs en cours d'execution ... quelqu'un sait comment l'obtenir ?
0
yzru Messages postés 6 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 3 mai 2007
3 mai 2007 à 18:24
Il me semble bien aussi que ca n'existe pas en natif, faut pas être trop exigent ...
0
Rejoignez-nous