Kann eine .NET-Komponente aus einer COM-Komponente verwendet werden?Kann eine .NET-Komponente aus einer COM-Komponente verwendet werden?
Antwort
Ja, es ist möglich.
Als thoroughly explained in this CodeProject article, gibt es zwei Möglichkeiten, es zu tun:
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.
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.
@BilltheLizard: Oh, Mist, die Frage war, .NET von COM zu konsumieren, nicht umgekehrt. Ich muss jetzt laufen, ich werde es später reparieren. – Groo
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. –
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.
Ihre Frage ist nicht so klar. – rahul