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 :

PropertyInfo.GetValue avec parametres


Sujet :

VB.NET

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 154
    Points : 62
    Points
    62
    Par défaut PropertyInfo.GetValue avec parametres
    Bonjour à tous, je viens vers vous aprés avoir tourné en rond pendant plusieurs jours.

    Je cherche à accéder à une propriété d'une classe de facon dynamique. C'est à dire que j'ai mon objet X, et que j'envoit dans une string le nom de la propriété à récupéré. Pas de soucis tant que le propriété ne prend pas de parametres, comme celle ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Property ETABLISSEMENT(Optional ByVal ConnexionUnique As SqlConnection = Nothing, Optional ByVal TransactionGlobale As SqlTransaction = Nothing) As Object
    La je seche, impossible de faire passer mes parametres. J'ai essayé via la réflexion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    			Dim ObjetDynamique As Object = monObjet
    			Dim ObjetDynamiqueType As Type = ObjetDynamique.GetType()
    			Dim SousObjetDynamique As System.Reflection.PropertyInfo = ObjetDynamiqueType.GetProperty("ETABLISSEMENT")
    			Dim PropValue As Object = SousObjetDynamique.GetValue(ObjetDynamique, Reflection.BindingFlags.GetProperty, Nothing, Nothing, Nothing)
    Et ca me répond bien sur "Nombre de paramètres incorrects."; Sauf que je ne sais pas comment les envoyer.

    Donc si qq'un a déjà fait ca je suis preneur de la solution car je suis vraiment bloqué

    Wells

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Points : 1 498
    Points
    1 498
    Par défaut
    Salut,

    Euh une propriete n'a pas d'argument ou alors c'est une fonction, donc il dit qu'il comprends pas.

    Pour moi c'est vraiment la premiere ligne que je ne comprends pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Property ETABLISSEMENT(Optional ByVal ConnexionUnique As SqlConnection = Nothing, Optional ByVal TransactionGlobale As SqlTransaction = Nothing) As Object
    De plus as-tu essaye ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim PropValue As Object = SousObjetDynamique.GetValue(ObjetDynamique, Nothing)

  3. #3
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Citation Envoyé par mermich Voir le message
    Salut,

    Euh une propriete n'a pas d'argument ou alors c'est une fonction, donc il dit qu'il comprends pas.

    Ha bon ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Private _maListe As List(Of Integer)
        Public Property maListe(index As Integer) As Integer
            Get
                Return _maListe(index)
            End Get
            Set(value As Integer)
                _maListe(index) = value
            End Set
        End Property
    Sinon pour répondre à ta question Wells, c'est possible, je l'ai déjà fait sur un prototype en passant en dur les arguments ... Mais ça date ... Je chercherais dans mes archives demain, à défaut je le referais vite fait c'était pas long.
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Points : 1 498
    Points
    1 498
    Par défaut
    _Ez3kiel => ok j'ai dit n'importe quoi, j'aurai mieux fait de me taire.

    Ceci etant dans son cas, je ne vois pas trop la pertinence d'un tel objet.

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    il suffit de regarder la signature de GetValue dans l'intellisense, les paramètres doivent être placés dans un tableau d'objet, ce qui en fait une variable unique
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Mermich c'est en chutant qu'on apprend à marcher.

    Et sinon j'ai retrouvé mon projet et c'est tout comme Pol63 a dit, on passe un tableau de paramètre(s).

    Soit une property d'objet Public Property personnes(ByVal rang As Integer) As personneData
    Et pour cette dernière en adaptant avec ton code ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                Dim ObjetDynamique As Object = a
                Dim ObjetDynamiqueType As Type = ObjetDynamique.GetType()
                Dim SousObjetDynamique As System.Reflection.PropertyInfo = ObjetDynamiqueType.GetProperty("personnes")
                Dim PropValue As Object = SousObjetDynamique.GetValue(ObjetDynamique, {2})
    'PropValue est du coup l'objet à l'index 2 de type personneData
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 154
    Points : 62
    Points
    62
    Par défaut
    Hum je crois comprendre ton exemple. Mais (et oui :'(), comment passer 2 paramètres comme dans mon exemple, toi tu t'en as qu'un;

    de plus, cette syntaxe est incorrecte en VB.Net (ou VB9) puisque le monsieur Visual Studio me répond :

    Visual Basic 90. ne prend en charge ce genre d'itération. Il n'aime pas les {} à priori.

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new object(){valeur1, valeur2}
    depuis vs 2010 on peut écrire directement {valeur1, valeur2}
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 154
    Points : 62
    Points
    62
    Par défaut
    Bah a priori il aime pas, sinon j'ai trouvé, solution perso:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim SousObjetparametres(1) As Object
    SousObjetparametres(0) = Nothing
    SousObjetparametres(1) = Nothing
     
    Dim Valeur As Object = SousObjetDynamique.GetValue(ObjetDynamique, SousObjetparametres)
    Merci à tous pour votre aide

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/11/2005, 16h52
  2. [Runtime]Commande avec paramètre
    Par greg1602 dans le forum Général Java
    Réponses: 19
    Dernier message: 15/11/2005, 14h20
  3. fonction avec parametre
    Par donny dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/06/2005, 11h31
  4. Réponses: 6
    Dernier message: 23/05/2005, 08h33
  5. [XSL] xsl:sort avec parametre et condition
    Par elraton dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 15/01/2005, 20h59

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