Domanda

Stiamo lavorando con un'applicazione nativa esistente (molto probabilmente scritto in VB) che carica le assemblee e chiama i metodi con "tardiva". Noi non abbiamo accesso al suo codice sorgente.

Vogliamo implementare questa interfaccia in C #, e avere l'applicazione nativa di chiamare il nostro montaggio C #.

E 'questo qualcosa che è possibile?

E 'questo tutto ciò che dobbiamo fare al di là corrispondenti ai nomi dei metodi e le firme dei metodi per farlo funzionare?

È stato utile?

Soluzione 2

Questi sono i passi necessari per farlo funzionare:

  1. Segna la classe [ComVisible (true)], e fare in modo di dare un attributo univoco [GUID]
  2. Trova il tuo ProgId alla classe che normalmente è MyNamespace.MyClass, ma è possibile aggiungere un attributo alla propria classe di ignorare questo pure
  3. Mettere la corretta [DISPID] attributi per ogni metodo che verrà chiamato
  4. Compilare il montaggio e regasm.exe corsa sulla vostra assemblea

E voilà! codice nativo può chiamare il C # tramite "l'associazione tardiva". Io, naturalmente, dovuto impostazione diverse chiavi del Registro di fare il mio applciation nativo sa come caricare la mia chiesa, ma tutto funziona.

Altri suggerimenti

Se si sta cercando di chiamare il codice .NET da VB6 il modo più pulito sarebbe quello di rendere il codice C # appare come un oggetto COM al codice VB6 - quindi sì, si avrebbe bisogno di segnare il tuo codice C # come ComVisible e garantire che sembra che l'interfaccia COM esistente.

Aggiornamento: Ecco s 'un articolo a ad iniziare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top