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 :

Singleton et instance d'une classe ActiveX


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 64
    Par défaut Singleton et instance d'une classe ActiveX
    Bonjour,

    j'ai un petit soucis concernant l'utilisation d'un singleton pour instancier une classe contenue dans un ActiveX.exe.
    La classe contenue dans l'activeX est : activeX

    Lorsque je procède ainsi, pas de soucis ma classe est bien instanciée.
    'Dim ax = New Mon_ActiveX.activeX

    Tandisqu'en passant par mon singleton j'ai une erreur :
    'Dim ax As classActiveX = classActiveX.getInstance()

    Impossible d'effectuer un cast d'un objet COM de type 'Mon_ActiveX.activeXClass' en type de classe 'WindowsApplication1.classActiveX'. Les instances de types qui représentent des composants COM ne peuvent pas être castées en types différents représentant des composants COM ; toutefois, elles peuvent être castées en interfaces tant que le composant COM sous-jacent prend en charge les appels QueryInterface pour l'IID de l'interface.

    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
    Public Class classActiveX
     
        'Instance
        Private Shared instance As Mon_ActiveX.activeX
     
        Protected Sub New()
            'constructeur par défaut
        End Sub
     
        Public Shared Function getInstance() As Mon_ActiveX.activeX
            'on initialise si ce n'est pas deja fait
            If instance Is Nothing Then
                instance = New Mon_ActiveX.activeX
            End If
            'on retourne l'instance de la classe classActiveX
            Return instance
        End Function
     
    End Class
    j'ai évidemment testé avec d'autres classes de mon activeX mais ce n'est pas lié le problème persiste toujours.

    Merci d'avance pour votre aide !

  2. #2
    Membre chevronné
    Inscrit en
    Décembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Décembre 2008
    Messages : 256
    Par défaut
    Essaye en modifiant la déclaration de la variable ax :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim ax As Mon_ActiveX.classActiveX = classActiveX.getInstance()

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 64
    Par défaut
    Merci beaucoup Gold Bug, ça fonctionne à ceci près que j'ai modifier ta syntaxe de :
    Dim ax As Mon_ActiveX.classActiveX = classActiveX.getInstance()

    vers :
    Dim ax As Mon_ActiveX.activeX = classActiveX.getInstance()


    Résoudre un problème c'est bien, le comprendre c'est encore mieux !
    Et pour ce point j'ai besoin d'un peu d'aide aussi >_< désolé ...

  4. #4
    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 : 43
    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
    Par défaut
    Citation Envoyé par pounaid Voir le message
    Résoudre un problème c'est bien, le comprendre c'est encore mieux !
    Et pour ce point j'ai besoin d'un peu d'aide aussi >_< désolé ...
    La méthode getInstance renvoie un objet de type Mon_ActiveX.activeX, et non de type classActiveX. Tu ne peux pas affecter un objet de type Mon_ActiveX.activeX à une variable de type classActiveX

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 64
    Par défaut
    D'accord merci tomlev,

    mon problème est pleinement résolu !

    Bonne journée

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/03/2008, 10h58
  2. Réponses: 2
    Dernier message: 17/01/2006, 13h18
  3. Connaitre toutes les instances d'une classe
    Par miniseb dans le forum Langage
    Réponses: 14
    Dernier message: 09/01/2006, 17h35
  4. connaitre l'instance d'une classe
    Par Jahjouh dans le forum C++
    Réponses: 8
    Dernier message: 25/11/2005, 22h44
  5. Réponses: 6
    Dernier message: 06/12/2004, 22h18

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