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 :

récupérer les valeurs de toutes les propriétés d'une classe par reflexion.


Sujet :

C#

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut récupérer les valeurs de toutes les propriétés d'une classe par reflexion.
    Bonjour/Bonsoir à tous.

    J'essaye de faire une methode qui me permette de parcourrir toutes les propriétés de ma classe.

    Je me suis inspiré de ce qu'il y a dans la FAQ, malheureusement ca se passe mal

    Ces propriétés peuvent retourner des string, int, ou encore booleen.

    Pourquoi une telle methode?
    Parceque au fil du temps, je vais rajouter des propriétés à ma classe, et je n'ai pas envie de devoir aller à chaque fois modifier ma méthode en concequence...

    Voici un extrait de code, le probleme est que Activator.CreateInstance me jete en disant que le type (System.String) n'a pas de constructeur par defaut.

    Peut etre que je me suis mal orienté dans mon choix, qu'en pensez vous?

    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
    public void ApplyFields(AccesMode mode)
            {
                object obj = null;
                Type objType;
                String TypeStr;
                Regex regType = new Regex("( ).*");
                foreach(MemberInfo Mi in typeof(CSettings).GetMembers())
              {
                  if (Mi.MemberType == MemberTypes.Property)
                  {
                      //Transforme "System.String MaProprio" en "System.String"
                      //C'est le seul moyen que j'ai trouvé pour récupéré le type retourné par ma propriété
                      TypeStr = regType.Replace(Mi.ToString(),""); 
                      objType = System.Type.GetType(TypeStr);
     
                      if (objType != null)
                      {
                          //Exception à l'execution, on m'annonce que 
                          //le type System.String n'a pas de constructeur par defaut :(
                          obj = System.Activator.CreateInstance(objType); 
     
     
                      }
                  }
              }

  2. #2
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Points : 112
    Points
    112
    Par défaut
    .GetType().GetPropertie("").GetGetMethod().Invoke( ....

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/06/2013, 00h07
  2. Réponses: 6
    Dernier message: 13/03/2009, 21h18
  3. Réponses: 5
    Dernier message: 27/08/2008, 15h29
  4. Réponses: 2
    Dernier message: 24/04/2008, 13h52
  5. Récuperer les valeurs de toutes les colonnes
    Par wishmastah dans le forum Access
    Réponses: 1
    Dernier message: 10/03/2006, 11h19

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