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 :

variables dynamique en C#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 3
    Par défaut variables dynamique en C#
    Bonjour,
    Je débute sous C# et je cherche à réaliser quelque chose que je faisais déjà dans d'autres langages : des variables dynamiques. Voici un exemple pour mieux comprendre.
    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
    class MaClasse{
          private string nom;
          ....
          private int myvar10;
          
          ...
    
          public bool is_valid(){
              bool valide=true;
              List<string> obligatoires = new List<string>{"nom",...,"myvar10"};
              foreach(string x in obligatoires){
                    //C'est ici que je ne sais pas comment faire
                     if(this.x!=null){
                          valide &= true;
                    }
                    else{
                          valide = false;
                    }
              }
              return valid;
          }
    }
    En gros, sur base d'un tableau de string, j'aimerais accéder aux paramètres de ma classe portant le même nom que ma string.
    Y'a-t-il des fonctions propres à C# pour accéder à la liste des paramètres d'une classe?

    D'avance merci de vos lumières sur ce point du langage.

  2. #2
    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
    Il y a la Reflection, qui sert précisément à cela. (introspection des objets).

    Mais en général, quand la question est fomulée ainsi, cela vient d'une conception effectuée par des ex-dev Php ou autre langages non compilés, et il y a presque toujours une réponse autre consistant à utiliser une conception appropriée et à ne pas plaquer des concepts hérités du php sur du C#. (ou du VB.Net, et c'est d'ailleurs tout aussi valable pour Java).

    Sinon, je ne comprends pas ce que tu entends par "paramétres de classe" ? les seules "paramètres de classe" en .net sont ceux des classes génériques. Les classes non génériques n'ont pas de paramètres.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 3
    Par défaut paramètres de classe
    Par paramètres de la classe, j'entends le nom de ses méthodes et propriétés, définies ou héritées.

  4. #4
    Membre chevronné Avatar de Jerede
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2010
    Messages : 271
    Par défaut
    Bonjour,

    Dans le cas oû ils sont dans la même assembly, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Type type = Assembly.GetExecutingAssembly().GetType("maSuperClass")
    type.GetField("blabla");
    Edit : J'avais mal lu

  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 somedev Voir le message
    Par paramètres de la classe, j'entends le nom de ses méthodes et propriétés, définies ou héritées.
    Tu veux parler des membres alors.

    Les paramètres, pour une classe, c'est tout autre chose; par exemple quand tu écris :

    String est ici le paramètre de la classe générique List

    Sinon, pour accéder aux membres, tu as la réponse il faut utiliser la Reflection.

    Mais il n'est pas si fréquent de devoir l'utiliser (a fortiori sur des objets qu'on a "sous la main"), donc je repête que, selon toute probabilité, tu es parti dans une conception inappropriée.

  6. #6
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Si tu nous expliquais ce que tu veux faire, on pourrait peut-être t'aiguiller sur la bonne manière de faire.
    Eventuellement 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
     
    class MaClasse{
      private string nom;
      ....
      private int myvar10;
     
      private List<object> lst = new List<object>();
     
    ....
     
      lst.Add(nom);
      lst.Add(myvar10);
     
    ....
     
      public bool is_valid(){
        bool valide=true;    
        foreach(object x in lst){
          if(x != null){
            valide &= true;
          }
          else{
            valide = false;
          }
        }
        return valid;
      }
    }
    Mais bon dans cet algorithme là, c'est uniquement le dernier objet de la liste qui détermine le retour de la fonction...

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 3
    Par défaut
    En fait, ce que j'essaye de faire c'est de modéliser mes objets comme les tables de ma base de données. Les "modèles" de mon appli MVC.

    Donc avoir des membres du même nom que les colonnes de mes tables.

    Et pour certaines fonctions, plutôt que de vérifier un à un mes membres (pour voir s'ils sont nuls), je veux pouvoir faire un foreach sur un tableau du nom de mes éléments.

    Suis pas vraiment un expert de la programmation, j'apprends sur le tas, et je dois dire que j'ai quelques difficultés à intégrer les bonnes pratiques de programmation. J'ai pas mal programmé en ruby on rails, et j'ai tendance à vouloir faire mes applis C# comme je faisais en rails.

    Les fonctions GetType et GetField m'ont bien aidé! Merci!

  8. #8
    Membre chevronné Avatar de Jerede
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2010
    Messages : 271
    Par défaut
    Tu peut mettre résolu si tu n'a plus de question alors

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

Discussions similaires

  1. variable dynamique dans une fonction javascript
    Par Shivaneth dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/04/2005, 15h58
  2. Variables dynamiques
    Par CriPpLe dans le forum C++
    Réponses: 5
    Dernier message: 23/02/2005, 11h56
  3. [SQL SERVER 2000] Noms de variables dynamiques
    Par cassoulet dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 08/09/2004, 11h44
  4. Récupération de variables dynamiques complexes
    Par ludoboy dans le forum ASP
    Réponses: 7
    Dernier message: 24/05/2004, 17h51
  5. [LG]Problême Variable dynamique de types différents
    Par pierrOPSG dans le forum Langage
    Réponses: 2
    Dernier message: 29/04/2004, 16h01

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