Récupération de la liste des variables locales

Signaler
Messages postés
18
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
12 mars 2008
-
Messages postés
18
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
12 mars 2008
-
Bonjour,

J'ai plusieurs variables dans une fonction du type :

   bool object1, object2, object3, object4,...

je souhaiterais récupérer la valeur de ces variables en ne donnant que le nom de la variable

avec une fonction du type GetValue("object1")

Si vous avez compris ce que je demande et si connaissez un moyen de faire ce que je veux ce serait cool

Ou d'une autre manière récupérer la liste des variables locales.

Merci d'avance

Olivier

6 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Salut,
En fouinant un peu dans la doc et dans le forum en utilisant le mot System.Reflection tu devrais trouver ton bonheur.
J'ai pas d'exemple tout fait sous la main...

<hr />
-Blog-
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
50
J'ai beau chercher, je comprends pas le but

J'ai plusieurs variables dans une fonction du type :
   bool object1, object2, object3, object4,...

Si tu te trouves dans la fonction, pourquoi vouloir une méthode qui te ramene les valeurs de ses variables ?

Mx
MVP C# 
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
50
Bon, comme la question est confuse (en tout cas pour moi :p), si tu cherches pour les variables de ta classe, je t'ai fait un petit exemple vite fait.
A toi d'adapter a tes besoins

<hr />namespace ConsoleApplication1
{

   class
Program
   {

      static
void Main(
string[] args)
      {

         TestReflection tr =
new
TestReflection();

         Console.WriteLine(tr.GetValue<
int>(
"value1", tr));

         bool value2 = tr.GetValue<
bool>(
"value2", tr);

         Console.WriteLine(tr.GetValue<
string>(
"value3",
null));

         Console.ReadLine();
      }
   }

public
class
TestReflection
{

   private
int value1 = 10;

   private
bool value2 =
true;

   private
static
string value3 =
"test";

   
   public T GetValue<T>(
string varName,
TestReflection instance)
   {

      Assembly assembly =
Assembly.GetExecutingAssembly();

      Type t = assembly.GetType(
"ConsoleApplication1.TestReflection");

      FieldInfo fieldInfo = t.GetField(varName,
BindingFlags.Public |
BindingFlags.NonPublic |
BindingFlags.Instance |
BindingFlags.Static);

      if (instance !=
null)

         return (T) fieldInfo.GetValue(instance);

      else
return (T) fieldInfo.GetValue(
null);      }
   }
}

<hr />

Mx
MVP C# 
Messages postés
18
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
12 mars 2008

Merci beaucoup je pense que ça devrait aller avec un exemple pareil

Olivier
Messages postés
18
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
12 mars 2008

J'avais mal lu mais, ce ne sont pas les variables de la classes qu'il me faut, mais les variables locales d'une methode...plus complexe

un peu comme dans visual studio lors du debug, l'affichage des variables locales

Olivier
Messages postés
18
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
12 mars 2008

Petite précision je suis avec un Framework 1.1 avec le 2.0 il y a LocalVariableInfo......mais bon....

Olivier