2008-11-03 7 views
0

J'ai deux classes de vb.net:membres hérités d'une Révéler COM vb.net classe

Public MustInherit Class Class1 
    Private m_sProperty1 As String = "" 
    Public Property sProperty1() As String 
     Get 
      Return m_sProperty1 
     End Get 
     Set(ByVal value As String) 
      m_sProperty1 = value 
     End Set 
    End Property 
End Class 

<ComClass("classid","interfaceid","eventid")> _ 
Public Class Class2 
    Inherits Class1 

    Private m_sProperty2 As String = "" 
    Public Property sProperty2() As String 
     Get 
      Return m_sProperty2 
     End Get 
     Set(ByVal value As String) 
      m_sProperty2 = value 
     End Set 
    End Property 
End Class 

Quand je référence à la DLL compilée par VB6, Classe2 expose seulement sProperty2. Comment puis-je accéder à la propriété héritée de la classe de base (sProperty1) via COM?

Répondre

0

Je vais faire une supposition que je ne suis pas à la vitesse sur

.NET

J'imagine votre déclaration prend vos méthodes publiques de Classe2 et la création d'une interface COM sur eux. Il ne prendra que des méthodes (et des propriétés) sur Class2 et non sur celles héritées (sinon vous obtiendrez toutes les méthodes publiques jusqu'à votre classe de base).

La solution consisterait probablement aussi à déclarer Class1 en tant que classe COM (il peut être possible de le marquer comme private) puis spécifier que l'ID d'interface COM de Class2 descend de l'ID d'interface COM de Class1.

Une chose comme ça devrait faire l'affaire.

1

Cela semble répondre à votre question:

Exportation héritage Hiérarchies

hiérarchies de classes gérées aplatissent lorsqu'ils sont exposés comme des objets COM. Par exemple, si vous définissez une classe de base avec un membre, puis héritez de la classe de base dans une classe dérivée exposée en tant qu'objet COM, les clients qui utilisent la classe dérivée dans l'objet COM ne pourront pas utiliser les membres hérités . Les membres de classe de base sont accessibles à partir d'objets COM uniquement en tant qu'instances d'une classe de base, et uniquement si la classe de base est également créée en tant qu'objet COM.

Extrait d'ici: Troubleshooting Interoperability

Questions connexes