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
 

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

Preguntas similares