ComClass

27/01/2006 - 14:32 por Juan Miguel | Informe spam
Hola a todos!!
Estoy desarrollando una clase .NET en la que me exigen que se pueda utilizar
en VB6 y ASP, es decir, que tengo que hacer un objeto COM.
Tengo desarrollada la clase .NET, y habia pensado en utilizar una ComClass
que te ofrece Visual Studio .NET.
Pero me he encontrado con dos problemas:

1) Creo una ComClass sencilla mediante la plantilla en la que hay una
propiedad de solo lectura que me devuelve un texto. Genero la CommClass y me
voy al VB6 y añado la referencia al fichero .tlb y me da Error de
automatizacion cuando intento mostrar con Msgbox el valor que me devuelve la
unica propiedad que posee. ¿Como soluciono esto?
2) Habia pensado que la ComClass podria heredar de la clase .NET y asi
finalizaba la version para COM. Pero en VB6 no me aparece ningun miembro
heredado de la clase .NET. Puedo suponer que el programar ComClass posee
limitaciones, y cuando haya algo que no puede interpretar para COM lo ignora.
¿Puede que ocurra eso? ¿o por que no veo los miembros heredados de la clase
.NET?

Todo esto lo hago para intentar no reprogramarlo para COM. Seria casi
perfecto el poder utilizar ComClass y que me funcionase la herencia.

Si alguien me puede orientar un poco en el tema, es la primera vez que
intento hacer un objeto Com a traves de .NET.

Muchas gracias.

Juan Miguel
 

Leer las respuestas

#1 Leonardo Azpurua [mvp vb]
27/01/2006 - 15:22 | Informe spam
Hola, Juan Miguel:

1) Creo una ComClass sencilla mediante la plantilla en la que hay una
propiedad de solo lectura que me devuelve un texto. Genero la CommClass y
me
voy al VB6 y añado la referencia al fichero .tlb y me da Error de
automatizacion cuando intento mostrar con Msgbox el valor que me devuelve
la
unica propiedad que posee. ¿Como soluciono esto?



El valor devuelto por la propiedad es String? Un problema podría ser que la
propiedad tuviera un tipo no compatible con COM, pero no me suena el caso.

Conservaste el constructor por defecto que se creó al insertar la ComClass?


2) Habia pensado que la ComClass podria heredar de la clase .NET y asi
finalizaba la version para COM. Pero en VB6 no me aparece ningun miembro
heredado de la clase .NET. Puedo suponer que el programar ComClass posee
limitaciones, y cuando haya algo que no puede interpretar para COM lo
ignora.
¿Puede que ocurra eso? ¿o por que no veo los miembros heredados de la
clase
.NET?

Todo esto lo hago para intentar no reprogramarlo para COM. Seria casi
perfecto el poder utilizar ComClass y que me funcionase la herencia.



Los miembros heredados tienen en la clase derivada exactamente los mismo
atributos que tienen en la clase base. A menos que la clase base fuese
COM-patible, sus miembros no seran accesibles por COM desde la derivada (y
tampoco estoy muy seguro de que lo fueran en caso contrario)

Debes "conectar" manualmente las interfaces COM con la clase .NET:

<ComClass(guid1, guid2, guid3)> _
Class ClasePublica
Dim ClaseServicios As New miClaseNet

Public Sub New()
MyBase.New
End Sub

Public Property Nombre
Get ()
Return ClaseServicios.Nombre
End Get
Set (Value As String)
ClaseServicios.Nombre = Value
End Set
End Property

y asi.

Salud!

Preguntas similares