ObjectCOM et héritage

Résolu
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 - 1 avril 2011 à 12:03
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 - 4 avril 2011 à 09:42
Bonjour,

Je voudrais crée un objet COM basé sur une classe DOT.NET déjà existante, mais sans avoir à modifier cette classe (je ne vais pas justifier du pourquoi je veut faire sa, mais sa se justifie ^^).

Je me suis donc dit : "J'hérite de la classe dans une autre classe com et poupouf sa fonctionneras ^^"

Bà non

Je comprend pas ? Pourtant c'est une classe tout ce qu'il y a de plus banale (enfin si elle à de fonction et procédure que je voudrais réutiliser dans VB6 mais rien exceptionnelle)

Le code de ma nouvelle classe :
<ComClass(VWConnexionCom.ClassId, VWConnexionCom.InterfaceId, VWConnexionCom.EventsId)> _
Public Class VWConnexionCom
    Inherits VWConnexion
#Region "COM GUIDs"
    ' These  GUIDs provide the COM identity for this class 
    ' and its COM interfaces. If you change them, existing 
    ' clients will no longer be able to access the class.
    Public Const ClassId As String = "e1385565-1a54-4567-ac24-30613f1b60d2"
    Public Const InterfaceId As String = "6aad24a3-8060-479a-b94d-f1d1e1ec57b2"
    Public Const EventsId As String = "47862e54-75d7-4f7d-af82-36d0c6765666"
#End Region

    ' A creatable COM class must have a Public Sub New() 
    ' with no parameters, otherwise, the class will not be 
    ' registered in the COM registry and cannot be created 
    ' via CreateObject.
    Public Sub New()
        MyBase.New()
    End Sub

End Class


Soit rien de rien juste un héritage

Mais du coup j'ai l'erreur :
Warning 1 'Microsoft.VisualBasic.ComClassAttribute' is specified for class 'VWConnexionCom' but 'VWConnexionCom' has no public members that can be exposed to COM; therefore, no COM interfaces are generated. E:\En développement\VW_ConnectionLib\VW_ConnectionLib\VWConnexionCom.vb 2 14 VW_ConnectionCom


Alors que ma classe "parent" contient un max de propriétés/fonctions/procédures public

Et en effet quand je compile et que veut l'utiliser dans VB6 je n'est aucune classe disponible

J'ai vraiment RIEN compris à l'héritage ou en effet ce truc devrais fonctionner ?

Admettons que je n'est rien compris comment fait-on pour crée ce genre de chose (sa m’étonnerais que sa ne soit pas possible quand même) ?

PS :
J'ai également tester d'hériter de cette classe :
Public Class Class1
    Public toto As Integer
End Class

J'ai exactement le même comportement

Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo

23 réponses

foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
2 avril 2011 à 13:08
Bon, j'ai dit des bêtises sur le couple héritage/interopérabilité

Voici un thread qui parle de ce sujet
lien

Désolé, c'est en anglais et les exemples sont en C#, mais il répond exatement à la question.

En gros, même si la classe de base est COM visible, les classes qui en hérite n'exposent pas pour COM les méthodes et propriétés de la classe de base.

Il faut donc définir une interface pour chaque classe enfant qui rappelle les méthodes de la classe de base.

Sur ce coup la je vous rejoind sur le fait que l'héritage, dans le cas de l'interopérabilité, est mal foutu et fastidieux à mettre ne oeuvre.
0
foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
2 avril 2011 à 15:26
Et ce lien msdn pour la gestion des exceptions COM Interop
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
4 avril 2011 à 09:42
Génial merci

Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
0
Rejoignez-nous