FieldInfo et "fixed" dans une structure

Signaler
Messages postés
18
Date d'inscription
jeudi 24 décembre 2009
Statut
Membre
Dernière intervention
13 mars 2013
-
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
-
Bonjour,

J'ai la structure suivante :
unsafe public struct TEST_STRUCT
{
   public Int32          Attr1;
   public fixed bool    Attr2[3];
}


Je veux parser cette structure via un FieldInfo et récupérer les types de variables et valeurs de chaque attribut...

Mon code :
unsafe
            {
                TEST_STRUCT test;

                test.Attr1 = 0;
                test.Attr2[0] = true;
                test.Attr2[1] = false;
                test.Attr2[2] = true;

                foreach (FieldInfo info in typeof(TEST_STRUCT).GetFields())
                {
                    object instanceCurrent = info.GetValue(test);

                    Console.WriteLine("{0,50}\t:\t{1,30}\t:\t{2,5}", info.Name, info.FieldType.FullName, info.GetValue(test));

                    object[] attr = info.GetCustomAttributes(typeof(System.Runtime.CompilerServices.FixedBufferAttribute), false);
                    if (attr.Length > 0)
                    {
                        System.Runtime.CompilerServices.FixedBufferAttribute bufattr = (System.Runtime.CompilerServices.FixedBufferAttribute)attr[0];
                        Console.WriteLine("Member '{0}' is a fixed buffer with {1} elements of {2}", info.Name, bufattr.Length, bufattr.ElementType);
                    }
                }
            }


J'y arrive facilement sur un attribut de type bool : je récupère le FieldInfo suivant : {Type : Int32, Name : Attr1} et le getValue fonctionne...

Par contre pour un tableau, j'ai le souci suivant : je récupère le FieldInfo suivant : {Type : e__FixedBuffer0, Name : : Attr2}...

J'arrive à choper le type du tableau avec un GetCustomAttributes(...) mais je ne sais pas comment faire pour récupérer les valeurs de chaque indice du tableau. :cry:

Sauriez vous le faire ?  ;)

Merci.

Pascal

2 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
Pour récupérer la valeur des éléments du tableau, si mes souvenirs sont bons, tu dois pouvoir passer un paramètre à la méthode GetValue de l'objet PropertyInfo.

--> http://msdn2.microsoft.com/fr-fr/library/b05d59ty(VS.80).aspx

exemple : pi.GetValue( monObject, new object[] { 1 } );
pour récupérer la valeur à l'index 1

Sébastien FERRAND (blog)
Consultant Indépendant
[Microsoft Visual C# MVP]
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
17
salut,

le prb dans ce cas, c'est peut être surtout le unsafe et le fixed. par contre, normalement, si tu fais un GetValue simple, tu dois récupérer une instance du tableau contenu dans la structure...

ShareVB