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

VB.NET Discussion :

Utiliser un nom de variable dynamique


Sujet :

VB.NET

  1. #1
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Février 2007
    Messages : 45
    Points : 42
    Points
    42
    Par défaut Utiliser un nom de variable dynamique
    Bonjour,

    J'ai actuellement un petit souci que je cherche à résoudre. J'ai codé en VB.Net plusieurs classe métiers dont une intitulée "Product". Les objets de la classe product ont diverses propriétés telles que : Product.NameFR, Product.NameEN, Product.NameES etc...

    Ce que j'aimerais savoir, c'est s'il est possible d'accéder au contenu d'une variable dont on désigne le nom dynamiquement.

    Je m'explique : à supposer que j'ai une variable intitulée "CurrentLanguage" contenant la valeur "FR" ou "EN" ou "ES", est ce que je peux accéder à la propriété Product.NameFR en concaténant "Name" et le contenu de ma variable CurrentLanguage ?

    Quelqu'un aurait une idée de comment faire ça ?

    Merci d'avance,

    Alexandre

  2. #2
    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 : 42
    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 754
    Points
    39 754
    Par défaut
    la question a déjà été souvent posée...

    plusieurs solutions:
    - utiliser la réflexion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Public ReadOnly Property Name() As String
            Get
                Dim propName As String = "Name" & CurrentLanguage
                Dim t As Type = Me.GetType()
                Dim prop As System.Reflection.PropertyInfo = t.GetProperty(propName)
                Return CType(prop.GetValue(Me, Nothing), String)
            End Get
        End Property
    (évidemment il faut ajouter un peu de code de gestion d'erreurs...)

    - mettre les différentes chaines dans un Dictionary, avec la langue comme clé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim Names As New Dictionary(Of String, Of String)
    ...
     
    Names.Add("FR", "Le nom en francais")
    Names.Add("EN", "Le nom en anglais")
     
        Public ReadOnly Property Name() As String
            Get
                Return Names(CurrentLanguage)
            End Get
        End Property

  3. #3
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Février 2007
    Messages : 45
    Points : 42
    Points
    42
    Par défaut
    Merci, la méthode par réflexion correspond à ce que je cherchais !

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

Discussions similaires

  1. [JSTL] nom de variable "dynamique"
    Par gmonta31 dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 04/05/2006, 13h31
  2. Nom de variable dynamique
    Par mavina dans le forum Linux
    Réponses: 7
    Dernier message: 26/04/2006, 20h48
  3. Réponses: 4
    Dernier message: 13/09/2005, 11h50
  4. Noms de Variables dynamiques
    Par horec dans le forum Langage
    Réponses: 7
    Dernier message: 22/07/2005, 16h47
  5. [SQL SERVER 2000] Noms de variables dynamiques
    Par cassoulet dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 08/09/2004, 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