acceder coleccion VB desde c#

10/02/2004 - 21:08 por Ariel Gimenez | Informe spam
Buenas
tengo otra coleccion la cual desde codigo de VB antes la accedian asi:

resultado = instancia_dll.coleccion(1).propiedad1
resultado = instancia_dll.coleccion(1).propiedad2
resultado = instancia_dll.coleccion(1).propiedad3

ahora yo desde c# accedo a la coleccion asi:

//agarro la coleccion
VBA.Collection coleccion = (VBA.Collection) instancia_dll.coleccion;
//esta porqueria es para acceder al item
object int_temp = 1;

object nombreZ = (object) coleccion.Item(ref int_temp);

ahora lo que me falta es llegar a las propiedades
cuando miro en el debugger este objeto nombreZ es system.__comobject

graciasss

Preguntas similare

Leer las respuestas

#1 Jose Marcenaro
10/02/2004 - 23:41 | Informe spam
Ariel

Lo más facil y seguro sería incluir en el proyecto .NET una referencia a la clase (definida en VB y seguramente expuesta en COM) de los objetos de la coleccion, es decir en vez de
object nombreZ = (object) coleccion.Item(ref int_temp)

usar
MyComLibrary.MyClass item = (MyComLibrary.MyClass) coleccion.Item(ref int_temp)
mes = item.Month
...etc

Casi con seguridad la clase de esos objetos debe estar expuesta, porque no tiene mucho sentido retornar en un método COM una coleccion de objetos desconocidos

Si no lo estuviera, y hubiera que explorar la interfaz de esos objetos con IDispatch... es mas dificil y no se como se hace ;) pero debe haber una forma

Espero que te sirv
Saludo
Jose




Buena
tengo otra coleccion la cual desde codigo de VB antes la accedian asi

resultado = instancia_dll.coleccion(1).propiedad
resultado = instancia_dll.coleccion(1).propiedad
resultado = instancia_dll.coleccion(1).propiedad

ahora yo desde c# accedo a la coleccion asi

//agarro la coleccio
VBA.Collection coleccion = (VBA.Collection) instancia_dll.coleccion
//esta porqueria es para acceder al ite
object int_temp = 1

object nombreZ = (object) coleccion.Item(ref int_temp)

ahora lo que me falta es llegar a las propiedade
cuando miro en el debugger este objeto nombreZ es system.__comobjec

graciass
Respuesta Responder a este mensaje
#2 Ariel Gimenez
11/02/2004 - 15:00 | Informe spam
excelente, asi si funca!!!!!!
ya me habia hecho la chanchada de armar un wrapper en vb para esa dll

"Jose Marcenaro" wrote in message
news:
Ariel:

Lo más facil y seguro sería incluir en el proyecto .NET una referencia a


la clase (definida en VB y seguramente expuesta en COM) de los objetos de la
coleccion, es decir en vez de
object nombreZ = (object) coleccion.Item(ref int_temp);

usar:
MyComLibrary.MyClass item = (MyComLibrary.MyClass)


coleccion.Item(ref int_temp);
mes = item.Month;
...etc.

Casi con seguridad la clase de esos objetos debe estar expuesta, porque no


tiene mucho sentido retornar en un método COM una coleccion de objetos
desconocidos.

Si no lo estuviera, y hubiera que explorar la interfaz de esos objetos con


IDispatch... es mas dificil y no se como se hace ;) pero debe haber una
forma.

Espero que te sirva
Saludos
Jose.







Buenas
tengo otra coleccion la cual desde codigo de VB antes la accedian


asi:

resultado = instancia_dll.coleccion(1).propiedad1
resultado = instancia_dll.coleccion(1).propiedad2
resultado = instancia_dll.coleccion(1).propiedad3

ahora yo desde c# accedo a la coleccion asi:

//agarro la coleccion
VBA.Collection coleccion = (VBA.Collection) instancia_dll.coleccion;
//esta porqueria es para acceder al item
object int_temp = 1;

object nombreZ = (object) coleccion.Item(ref int_temp);

ahora lo que me falta es llegar a las propiedades
cuando miro en el debugger este objeto nombreZ es system.__comobject

graciasss



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida