1. #1
    Nouveau membre du Club
    Inscrit en
    septembre 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 71
    Points : 38
    Points
    38

    Par défaut Classe: sélectionner une propriéte à partir d'une variable

    Bonjour,

    Dans une classe je souhaiterai pouvoir sélectionner une propriété à partir d'une variable pour lui attribuer une valeur:
    Quand je fais le code ci dessous , ca fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Class CT
    		Property PID As String
     
    Public Sub Initialise (ByVal Type As String)
     
                		Me.PID = "jojo"
     
    End sub
     
    End class
    Et j'aurai voulu faire quelque chose dans ce genre, dans lequel Type = "PID", mais ca ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Class CT
    		Property PID As String
     
    Public Sub Initialise (ByVal Type As String)
     
     
                            Dim prop = Me.GetType().GetProperty(Type)
                		prop = "jojo"
     
    End sub
     
    End class
    Sur la ligne prop = "jojo" j'ai l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Impossible de convertir une valeur de type 'String' en 'System.Reflection.PropertyInfo'. (BC30311)
    Merci pour votre aide

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    juillet 2005
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : juillet 2005
    Messages : 434
    Points : 1 081
    Points
    1 081

    Par défaut

    Bonjour,

    Utilise SetValue pour définir la valeur.

    Cependant je trouve étrange de vouloir modifier la valeur d'une propriété d'une class, à l'intérieur de la class, par réflexion ! Et tu sûr qu'il n'y a pas plus simple ? quel est le but final ?

    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  3. #3
    Nouveau membre du Club
    Inscrit en
    septembre 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 71
    Points : 38
    Points
    38

    Par défaut

    Bonjour merci pour votre réponse.

    Ma classe CT correspond correspond à un fichier CT.txt contenant plusieurs champs géneriques (Type, PID, ...) , c'est pas vraiment ca mais j'essaie de faire simple.

    Lorsque je lis un fichier CT.txt, suivant le type que j'ai choisis dans mon MainForm, je fais appelle à la classe qui va renseigner les champs PID , etc en fonction d'une structure contenu dans un fichier xml, fichier xml qui s'appelera ST51.xml par exemple ST51 étant le "Type".

    Je sais pas si c'est clair.
    Je pensais que c'était à cela que servait les classes ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    juillet 2005
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : juillet 2005
    Messages : 434
    Points : 1 081
    Points
    1 081

    Par défaut

    Bonjour,

    Alors j'ai en effet pas tout compris mais oui les classes servent à ça . C'est juste que le premier post parle de réflexion, ce qui est quand même un peu spécifique comme domaine...

    Donc ce que j'ai compris :
    Tu as un fichier texte que tu parcours, tu as plein de structure différente d'écrite en XML, tu as une interface dans laquelle tu choisis une options (la structure au final ?)... Donc en extrapolant un peu je me dis que tu dois ranger les infos contenues dans le fichier Txt en fonction de la structure contenu dans un XML, structure que l'on choisi parmi d'autres ?
    Donc je comprends un peu mieux, ton problème est que suivant le type de stucture que tu auras, il faudra que tu aille chercher tel ou tel valeur. Par exemple pour struct1 tu auras besoin de PID pour struct2 tu auras besoin d'une autre propriété...
    Faudrait qu'on est plus de détail pour pas dire de bêtises, mais si l'idée de base c'est ça, je verrais bien une classe abstraite qui prend un fichier txt en entrée et produit le XML en sortie, puis une classe concrète par type de structure qui implémente la classe abstraite...

    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  5. #5
    Nouveau membre du Club
    Inscrit en
    septembre 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : septembre 2010
    Messages : 71
    Points : 38
    Points
    38

    Par défaut

    Bonjour,

    Merci pour le retour.
    J'ai peut être pas été clair dans ce que j'ai dit.

    En fait j'ai un user form avec les champs PID, etc... pour une structure

    Je vais chercher la valeur de ces champs dans des fichiers textes.
    Ces fichiers textes n'ont pas tous la meme structure (par exemple le champ PID n'est pas a la meme ligne suivant que c'est une structure A ou B) mais par contre ils ont les mêmes champs.
    Pour chaque structure j'ai un fichier xml qui me permet d'aller chercher les valeurs des champs selon le fichier texte que je lis.

    Voilà, je sais pas si c'est plus clair ce que je dis ?

    J'ai pas bien compris ce que voulais dire "par réflexion" ?

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    juillet 2005
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : juillet 2005
    Messages : 434
    Points : 1 081
    Points
    1 081

    Par défaut

    Bonjour,

    Toujours d'actualité ?
    La réflexion c'est ce que tu fais dans ton premier post, quand tu vas chercher une valeur d'un type que tu ne connais pas au moment de la compilation, attachée à une propriété que tu ne connais pas non plus, et c'est donc lors de l'exécution du programme que tu vas aller, par réflexion et le plus souvent à l'aide d'une chaine donnant le nom du type ou de la propriété, obtenir la valeur, demande à google pour plus d'infos, là c'est pas le but justement, tu as forcement une archi meilleure que de passer par la réflexion, faut juste savoir précisément ce que tu veux faire

    Donc ton explication avec mes mots donne : tu as un userForm qui correspond à une structure (va falloir qu'on lui donne un nom) qui as des propriétés, par exemple PID, puis à coté tu as des fichiers de données (.txt), qui contiennent toutes les valeurs de la structure (par exemple PID = 23), mais dans ces fichiers c'est rangé différemment suivant le type de fichiers, donc tu as un fichier XML par type de fichiers txt différents, qui te permettent de savoir ou sont les infos dans le fichier de donnée, par exemple dans le XML tu auras l'info : PID est à la ligne 14, dans un autre fichier XML PID est à ligne 22 ?
    Pour ta structure il faut lui donner un nom, significatif, par exemple si c'est pour des tuyaux on va l'appeler Tuyau, si c'est des fruits : Fruits... etc.

    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/03/2010, 15h43
  2. Saisir une image à partir d'une photo ou d'une vidéo
    Par lohengrin56 dans le forum Flash/Flex
    Réponses: 0
    Dernier message: 07/07/2009, 16h17
  3. Réponses: 2
    Dernier message: 05/01/2009, 12h45
  4. Réponses: 5
    Dernier message: 22/05/2008, 14h42
  5. Réponses: 2
    Dernier message: 16/01/2008, 18h40

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