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.
- 1. Kann eine while-Schleife innerhalb einer Schleife verwendet werden?
- 2. Kann eine if-Anweisung in einer Factory (FactoryGirl) verwendet werden?
- 3. Kann MvcMailer in einer Klassenbibliothek verwendet werden?
- 4. Kann #define in einer Funktion verwendet werden?
- 5. Kann dcast ohne eine Aggregatfunktion verwendet werden?
- 6. Kann GraphViz für eine grafische Bearbeitungsoberfläche verwendet werden?
- 7. Kann HttpClient gleichzeitig verwendet werden?
- 8. Können VS2008-Bibliotheken aus einer VS2003-Lösung verwendet werden?
- 9. ADLivelyTableView kann nicht verwendet werden
- 10. Feld aus einer Tabelle kopieren, die in einer Abfrage für eine andere Tabelle verwendet werden soll
- 11. Kann Unity3D NavMesh in einer Serveranwendung verwendet werden?
- 12. Kann PHP in einer XML-Datei verwendet werden?
- 13. Eine Variable in einem jQuery-Selektor kann nicht verwendet werden
- 14. Kann eine Schleife zum Deklarieren von Variablen verwendet werden?
- 15. Ruby kann nicht verwendet werden
- 16. Swift: Bibliothek aus Pod-Datei kann nicht verwendet werden
- 17. "document.execommand ('copy');` aus der Entwicklerkonsole kann nicht verwendet werden
- 18. BitScanForward64 kann nicht verwendet werden
- 19. Kann GeoServer in einer kommerziellen Anwendung verwendet werden?
- 20. Responsivevoice.js kann offline verwendet werden?
- 21. Kann ExecuteReader() zweimal verwendet werden?
- 22. Kann JSONP sicher verwendet werden?
- 23. kann nicht verwendet werden ScalaTest
- 24. Eine Variable deklarieren, die für mehrere Formulare verwendet werden kann
- 25. Kann eine Rückreferenz in einem Nummernbereich verwendet werden?
- 26. Wann kann requestScope in jstl verwendet werden?
- 27. Kann aktive Rekord-Migrationen für eine vorhandene Datenbank verwendet werden?
- 28. Kann ein FormEditor in einer e4-Anwendung verwendet werden?
- 29. Kann CouchDB tatsächlich für eine Desktop-Anwendung verwendet werden?
- 30. Eine Variable in mysql kann nicht verwendet werden Wählen Sie
Ihre Frage ist nicht so klar. – rahul