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 :

[C#]Accès aux noms des classes d'une classe statique


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Par défaut [C#]Accès aux noms des classes d'une classe statique
    Bonjour,
    Je suppose que cela se fait à l'aide de réflexion, mais je ne maîtrise pas encore assez cette partie pour trouver par moi même, et je ne trouve rien sur internet, donc la question est simple : Comment accéder aux noms des classes statiques d'une autre classe statique ?
    Un petit exemple pour illustrer ça :
    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
     
    namespace A
    {
      public static class A1
      {
        public static class A11
        {
        }
        public static class A12
        {
        }
        public static string[] GetClassNames()
        {
           // Devrait retourner {"A11", "A12"}
        }
      }
    }
    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Regarde du côté de Type.GetNestedTypes()
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Regarde du côté de Type.GetNestedTypes()
    "Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique Type.GetNestedTypes()"...

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par jo_dalton Voir le message
    "Une référence d'objet est requise pour la propriété, la méthode ou le champ non statique Type.GetNestedTypes()"...
    Je n'ai pas dit "copie/colle le code et ça va marcher", je t'ai suggéré de regarder la doc de cette méthode.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    D'ailleurs, là, comme ça ; à quoi ça sert de mettre des classes statiques les unes dans les autres ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    Je n'ai pas dit "copie/colle le code et ça va marcher", je t'ai suggéré de regarder la doc de cette méthode.
    Au temps pour moi J'étais sur autre chose, je n'ai pas pris le temps de trop réfléchir!

    En tout cas, je n'ai toujours rien trouvé!

    L'intérêt de classes statiques imbriquées... Pas énorme, cependant ce sont des classes que je n'instancie pas, donc je n'aime pas les mettre en non statiques, mais elles pourraient très bien ne pas l'être, et vont surement ne plus l'être étant donné que c'est assez pénible à gérer dans ce genre de cas apparemment...

    C'est une classe où je mets des des informations relatives à la config de mon programme, en gros un truc du genre :
    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
     
    namespace Common
    {
      public static class Config
      {
        public static class General
        {
          private static Dictionary<string, string> _Data = new Dictionary<string, string>()
            {
              { 
                 "FichierCibleExport",
                 System.IO.Path.Combine(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Base.mdb")
              }
            };
        }
        public static class Section1
        {
          private static Dictionary<string, Int32> _Data = new Dictionary<string, Int32>()
            {
              {"NbDigitsNum",4}
            };
          public static int NbDigitsNum { get { return _Data["NbDigitsNum"]; } set { _Data["NbDigitsNum"] = value; } }
        }
        public static void SaveSection(string sectionName)
        {
    //       if(Config.ClassExist(sectionName)) Sauver();
        }
      }
    }
    Après il y a surement d'autres façons de faire... Celle ci me va bien car les sections sont assez pratiques dans mon cas, et je préfère avoir accès à certaines variables de ma config par accès direct dans l'arborescence du projet sans avoir de nom en chaine de caractères D'où les classes avec des getters pour certaines variables...

    Et je ne vois pas vraiment dans ce cas l'intérêt d'avoir des classes non statiques... Mais je me trompe peut être. Je me lance juste dans la config XML, j'étais plutôt parti pour du .ini au départ à cause de son accessibilité à tout public (mon appli n'est pas du tout destinée à des informaticiens ), mais bon, je vais plutôt essayer de faire un panneau de config complet et de sauvegarder le fichier de config en XML.

  7. #7
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    T'as pas du beaucoup chercher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Type type = typeof(A1);
    foreach(Type t in type.GetNestedTypes())
    {
       string name = t.Name;
    }
    Quant à l'utilité de tes classes imbriquées c'est vrai que c'est pas top.
    Pourquoi pas tout simplement des propriétés ?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Par défaut
    Merci bcp Skyounet, c'est exactement ce que je cherchais... Cependant de là à dire que je n'ai pas cherché... Mal je te l'accorderais
    Je n'avais pas pensé à ça j'avoue... : Type type = typeof(A1)
    Je cherchais à l'appliquer directement à la classe, ce qui évidemment ne fonctionnait pas....

    Pour les classes imbriquées j'avais oublié une accolade dans l'exemple, c'était peut être pas clair, mais c'est juste que j'ai une classe par section... J'ai préféré les classes parce que je n'avais pas envie de faire des pripriétés Section1_Prop1, Section1_Prop2, etc...

    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/08/2014, 14h59
  2. Réponses: 3
    Dernier message: 06/01/2010, 09h47
  3. Accès aux membres au sein d'une classe
    Par 50Nio dans le forum Langage
    Réponses: 5
    Dernier message: 20/08/2009, 12h30
  4. récupérer le nom des attributs d'une classe
    Par danyboy85 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 22/06/2006, 11h42
  5. Réponses: 4
    Dernier message: 22/12/2005, 11h43

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