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 :

Créer une instance d'une classe à partir de son nom


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif Avatar de katoyi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Par défaut Créer une instance d'une classe à partir de son nom
    Bonjour,
    Voila, j'ai déclaré une interface avec laquelle j'ai écrit plusieurs classes. Les noms de ces classes se trouvent dans un fichier XML. Je parcourt ce fichier et je récupère les noms, je dois donc instancier ces classes puis faire un cast vers l'interface afin de pouvoir les utiliser. Voici le code
    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
     
    Dim asm As Assembly = Assembly.LoadFrom("emplacement_de_la_dll")
    classNorme = "nom_de_la_classe"
    pathnorme = "nom_complet_de_la_classe"
        Try
            type = asm.GetType(pathnorme)
            obj = type.InvokeMember(classNorme, BindingFlags.CreateInstance, Nothing, Nothing, Nothing)
            instanceInorme = CType(obj, INorme)
            returnValue = instanceInorme.Verify(nomfichier, RequeteText)
            If returnValue = 0 Then
                 streader.WriteLine(nomfichier)
                 streader.WriteLine(typenorme & " : " & instanceInorme.getError)
            End If
        Catch ex As Exception
              MsgBox("Exception " & classNorme & " : " & ex.Message)
        End Try
    J'ai beau essayer de l'exécuter, cela ne marche pas. L'erreur survient au niveau du cast.
    Quelqu'un connait la source du problème.
    Merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 206
    Par défaut
    Bonjour,

    Quelle erreur affiche t-il ?

  3. #3
    Membre actif Avatar de katoyi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Par défaut
    impossible d'effectuer un cast d'un objet de type 'le nom de la classe' en type 'nom de l'interface'

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 206
    Par défaut
    tu as ta réponse, tu essayes de caster une classe en interface.
    tu peux essayer quelques choses du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     Dim asm As Assembly = System.Reflection.Assembly.LoadFile(assemblyName)
    t = assembly.GetType("MonType")
    obj = Activator.CreateInstance(t, New Object() {"Eventuel parametre du contructeur"})
    obj.MaFonction()

  5. #5
    Membre actif Avatar de katoyi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 101
    Par défaut
    J'ai essayé ton code, il m'affiche la même erreur. J'ai débugé et j'ai remarqué qu'au niveau de la création de l'objet, rien ne se passe. L'objet n'est pas créé. As tu une idée de ce qui peut bien se passer?
    Merci.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 206
    Par défaut
    C'est obj qui est a nothing ? si c'est le cas, tu ne dois pas saisir correctement le nom de ta classe. Est ce que ta classe a un namespace ?
    Regarde en debug les propriétés de ton object "asm", il te donne les noms exacts de tes classes qui se trouve dans ta dll. (ca doit etre asm.getTypes) et tiens moi au courant.

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

Discussions similaires

  1. Instancier une classe à partir de son nom?
    Par nabil148911 dans le forum Langage
    Réponses: 5
    Dernier message: 13/01/2009, 02h00
  2. Réponses: 9
    Dernier message: 26/09/2007, 16h18
  3. Réponses: 6
    Dernier message: 06/04/2007, 21h20
  4. Réponses: 5
    Dernier message: 09/03/2007, 21h14
  5. Réponses: 7
    Dernier message: 29/11/2006, 11h32

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