Pregunta

Estamos trabajando con una aplicación nativa existente (muy probablemente escrito en VB) que carga asambleas y llama a los métodos con "Enlace en tiempo." No tenemos acceso a su código fuente.

Queremos implementar esta interfaz en C #, y tener la aplicación nativa llamar a nuestra asamblea C #.

Es esto algo que es posible?

Es esto todo lo que tenemos que hacer más allá de coincidir los nombres de los métodos y las firmas de los métodos para hacer que funcione?

¿Fue útil?

Solución 2

Estos son los pasos necesarios para hacer que funcione:

  1. Marque su clase [ComVisible (true)], y asegúrese de darle un atributo único [ía]
  2. responden a su ProgId a su clase que normalmente es MyNamespace.MyClass, pero se puede añadir un atributo en su clase para anular esta, así
  3. Poner los atributos adecuados [DispId] para cada método que se llama
  4. Compile su montaje y funcionamiento regasm.exe en su montaje

Y listo! código nativo puede llamar a su C # a través de "el enlace en tiempo". Yo, por supuesto, tenía que varias claves del registro de configuración para hacer mi applciation nativa sabe cargar mi montaje, pero todo está funcionando.

Otros consejos

Si usted está tratando de llamar a código .NET desde VB6 la manera más limpia sería hacer que el código C # aparece como un objeto COM al código de Visual Basic 6 - así que sí, lo que se necesita para marcar su código C # como ComVisible y garantizar que se parezca a la interfaz COM existente.

Actualización: Aquí 's un artículo a empezar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top