IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Reflection et DataTable


Sujet :

C#

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Reflection et DataTable
    Salut,

    Voila Ce que je veux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    Class A
    {
     public DataTable dtFromA;
     public A()
    {
     //initialisation de la DataTable dtFromA;
     
    }
     
     
    }
     
    public static DataTable getDataTable(A objA)
    {
       //Retourner la DataTable de l objA
       //En faisant de la reflection sur l objetA
       //Un truc du Style:
     
      Type TypeDt = typeof(A);
      FieldInfo[] myFieldInfo = TypeDt.GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public)
     
        object o = myFieldInfo[0].GetValue("dtFromA");
     
        //Sachant que la string "dtFromA" peut etre recupere par un autre moyen
     
       DataTable dt = o as DataTable;
     
       return dt
     
    }
    L idee est de lister toutes les DataTable d une classe sans connaitre la classe.
    Il faut donc utiliser la reflection. Avec FieldInfo, on peut recuperer les noms des DataTable mais je veux recuperer les DataTable.



    Si vous avez des idees.


    ..

  2. #2
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2008
    Messages : 256
    Points : 311
    Points
    311
    Par défaut
    Y'a un truc que je ne comprends pas.
    La DataTable de la classe A est publique. Donc pourquoi ne pas y accéder directement par son nom de champ ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    A myA = new A();
    // initialisations
    ...
    // utilisation
    DataTable dt = myA.dtFromA;

  3. #3
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Explication
    Peut etre que je me suis mal exprime.
    L idee c est d avoir une fonction STATIC List<DataTable> getListDataTables(Objet A) qui prend en parametre un Objet. Cet Object est une classe.N importe quel classe.
    1-Voir si cette classe a des DataTable
    2- si oui, retourner la liste des DataTable

    Si vous rajouter un attribut DataTable a une classe, elle sera automatiquement detecter dans cette fonction et ajoute a une liste de DataTable.


    But:
    Creation dynamique de liste de DataTable d une classe.




    ..

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    euh... ce serait pas plus simple d'utiliser un DataSet ??

    Enfin, si tu tiens vraiment à utiliser la réflexion, un truc comme ça devrait marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public static List<DataTable> GetDataTables(object obj)
    {
        List<DataTable> lst = new List<DataTable>();
        FieldInfo[] fields = obj.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);
        foreach (FieldInfo fi in fields)
        {
            if (typeof(DataTable).IsAssignableFrom(fi.FieldType))
            {
                DataTable tbl = fi.GetValue(obj) as DataTable;
                lst.Add(tbl);
            }
        }
        return lst;
    }

Discussions similaires

  1. [VB.NET][ADO]Fusionner des dataTables
    Par neo.51 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 30/07/2005, 00h22
  2. [Reflection][Bean] Appel d'une méthode dynamiquement
    Par eraim dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 28/04/2004, 11h07
  3. Réponses: 2
    Dernier message: 20/02/2004, 08h47
  4. Reflections
    Par Laurent Gomila dans le forum DirectX
    Réponses: 4
    Dernier message: 25/07/2003, 14h42
  5. Réponses: 3
    Dernier message: 21/05/2003, 11h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo