Il modo migliore per accedere agli oggetti COM da C #

Sto pianificando di utilizzare vari oggetti esposti come oggetti COM. Per renderli più facili da usare, mi piacerebbe racchiuderli come oggetti C #. Qual è l’approccio migliore per questo?

Se la libreria è già registrata, è ansible eseguire le seguenti operazioni per fare in modo che Visual Studio generi un assembly di interoperabilità:

  • Apri al tuo progetto Visual Studio.
  • Fai clic con il pulsante destro del mouse su “Riferimenti” (direttamente sotto il progetto in Esplora soluzioni) e seleziona “Aggiungi riferimento”.
  • Seleziona la scheda COM. (Se non vedi questo, hai un tipo di progetto che non supporta COM.)
  • Seleziona il componente con cui desideri effettuare l’interpunzione.
  • Seleziona “ok”.

Questa sarà una class o un set di classi C # che racchiudono tutta la roba dell’interfaccia COM con una normale class C #. Quindi lo usi come qualsiasi altra libreria C #. Se l’importazione del riferimento ha funzionato bene, puoi esplorarla come qualsiasi altro riferimento e i metodi / structs / classs / constants dovrebbero apparire in quel namespace e intellisense.

Questo ti farà iniziare, almeno. Se questo è distribuito in un ambiente aziendale o in un ambiente che puoi controllare, questo potrebbe essere tutto ciò di cui hai bisogno.

C’è un buon articolo da MSDN su questo, che spiega il codice gestito e non gestito, e ti guida passo dopo passo come farlo. http://msdn.microsoft.com/en-us/library/ms973800.aspx#

Divertiti!

È ansible (inizialmente) solo importare il riferimento. Se hai bisogno di più controllo (o ottieni errori dall’importazione di VS) puoi usare tlbimp nel windows sdk. Questo creerà gli assembly di interoperabilità. Puoi ottenere le definizioni di class dai metadati.

EDIT: Questo è in realtà molto più complicato se si vuole lavorare con 64 bit