2009-07-01 13 views

Antwort

2

Ja, es ist möglich.

Als thoroughly explained in this CodeProject article, gibt es zwei Möglichkeiten, es zu tun:

  1. Die frühe Bindung, die ein Werkzeug (Typ Bibliothek Importeur oder tlbimp.exe) beinhaltet die Verwendung einer Binärdatei (eine .NET-Assembly) zu schaffen, enthält Metadaten, die erforderlich sind, damit die CLR das Runtime Callable Wrapper für das COM-Objekt instanziiert. Dies bietet alle starken Tippvorteile, da Sie auf die generierte Assembly verweisen und diese Klassen wie jede andere .NET-Klasse in Ihrem Code verwenden können.

  2. Späte Bindung, die die Type.InvokeMember-Methode verwendet, um Methoden eines COM-Objekts mit ihrem Namen während der Laufzeit aufzurufen. Da dieser Ansatz schwach typisiert ist, ist er fehleranfälliger als eine frühe Bindung, ermöglicht jedoch auch eine größere Flexibilität.

+0

@BilltheLizard: Oh, Mist, die Frage war, .NET von COM zu konsumieren, nicht umgekehrt. Ich muss jetzt laufen, ich werde es später reparieren. – Groo

4
+0

Während dies die Frage theoretisch beantworten könnte, [wäre es vorzuziehen] (http://meta.stackexchange.com/q/8259), die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. –

1

Ja Lesen Sie, können Sie es tun (wie in den anderen Antworten erwähnt).

Es läuft darauf hinaus grundsätzlich bis auf Ihre .NET-Komponente als eine COM-Komponente aussetzt (dies kann durch die Unterzeichnung der Assembly und nur einen Schalter umlegen erfolgen [Stellen Montage COM-Visible] im Assembly Information Dialog Box, aber gute Praxis fordert, eine Schnittstelle zu implementieren, und nur die Schnittstelle mit der ComVisibleAttribute).

Auf diese Weise kann Ihre COM-Komponente mit der .NET-Komponente kommunizieren, als wäre es auch eine COM-Komponente.

Verwandte Themen