FieldInfo et "fixed" dans une structure

pcayrol Messages postés 18 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 13 mars 2013 - 28 janv. 2008 à 09:22
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 - 3 févr. 2008 à 20:58
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

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
28 janv. 2008 à 09:59
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]
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
3 févr. 2008 à 20:58
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
Rejoignez-nous