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 :

Recuperation des classes d'un projet


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut Recuperation des classes d'un projet
    Salut

    est il possible de recuperer dynamiquement la liste des classes d'un projet...

    par exemple toutes les classes herites d'un classe A ...

    thx @+

  2. #2
    Membre émérite
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Par défaut
    Tout ça est possible en c#, et ça s'appel "reflection"
    Voir:
    http://msdn2.microsoft.com/fr-fr/lib...83(VS.80).aspx

    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
    using System;
    using System.Reflection;
     
    class TestReflexion {
      public static void Main() {
        foreach(Assembly asm in AppDomain.CurrentDomain.GetAssemblies() ) {
          if (asm.GetName().Name != "mscorlib") {
              foreach (Type ty in asm.GetTypes() ) {
              Console.WriteLine("Classe : " + ty);
              foreach (MethodInfo mi in ty.GetMethods() ) {
                Console.WriteLine(" Méthode   : " + mi);
                foreach (ParameterInfo pi in mi.GetParameters() )
                  Console.WriteLine(" Paramètre : " + pi.GetType() );
                }
              }
            }
          }
        }
      }
    (trouver en peu de temps sur le net...)

  3. #3
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut
    Merci

    Est ce egalement possible de recuperer les membres d'une classe a partir de la classe ??

  4. #4
    Membre émérite
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Par défaut
    surement...

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Seth77
    Merci

    Est ce egalement possible de recuperer les membres d'une classe a partir de la classe ??
    variableInstanceDeClasse.GetType().GetMembers()

    te retourne tout (et plus).

    Tu as de plus des méthodes spécialisées pour les propriétés, les méthodes, les variables membres (GetProperties, GetMethods, GetFields respectivement).

    Chacune de ces méthode possède une signature de base (sans param) qui retourne tout, et une avec un paramètre de Binding permettant de restreindre le retour (Public, static, etc ...).

    Attention : il semble y avoir quelques bugs avec ce paramètre (par exemple un GetFields avec le BindingFlags.Public ne fonctionne pas sur les fields statiques, pour une raison que j'ignore).

  6. #6
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut
    Citation Envoyé par Bluedeep
    variableInstanceDeClasse.GetType().GetMembers()

    te retourne tout (et plus).

    Tu as de plus des méthodes spécialisées pour les propriétés, les méthodes, les variables membres (GetProperties, GetMethods, GetFields respectivement).

    Chacune de ces méthode possède une signature de base (sans param) qui retourne tout, et une avec un paramètre de Binding permettant de restreindre le retour (Public, static, etc ...).

    Attention : il semble y avoir quelques bugs avec ce paramètre (par exemple un GetFields avec le BindingFlags.Public ne fonctionne pas sur les fields statiques, pour une raison que j'ignore).
    Slu

    voila ce que j'essaye :

    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
     
    class Class1_member
        {
            public int i1;
            private bool b1;
            private bool b2;
     
            public Class1_member()
            {
     
                i1 = 12;
                b1 = true;
                b2 = false;
     
                this.GetType().GetFields(BindingFlags.NonPublic);        (1)
                this.GetType().GetFields();                         (2)
            }
        }
    Et pourtant je ne recupere avec 1 rien et avec 2 juste i1 ....
    Comment faire pour recuperer i1, b1 et b2 ?


  7. #7
    Membre éprouvé Avatar de Seth77
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2005
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 448
    Par défaut
    Salut

    Est ce que c'est completement faux ou alors personne ne comprends commme moi ?

Discussions similaires

  1. [Eclipse 3.4.1] comparer des classes de 2 projets
    Par stigmate101 dans le forum Eclipse
    Réponses: 2
    Dernier message: 30/03/2009, 18h39
  2. Intégrer des classes d'autre projets dans son JAR
    Par romaintaz dans le forum Maven
    Réponses: 7
    Dernier message: 20/02/2008, 12h02
  3. [Débutant] inclure des .class dans le projet
    Par chadliii dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 16/02/2007, 00h01
  4. Récupérer des classes d'un projet MDI
    Par MoscoBlade dans le forum MFC
    Réponses: 2
    Dernier message: 10/12/2006, 16h25
  5. Réponses: 3
    Dernier message: 05/07/2006, 11h59

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