Freigeben über


Qualifizieren von .NET-Typen für die Zusammenarbeit

Wenn Sie Typen in einer Assembly für COM-Anwendungen offen legen möchten, müssen die Voraussetzungen von COM-Interop zur Entwurfszeit erfüllt sein. Verwaltete Typen (Klasse, Schnittstelle, Struktur und Enumeration) können nahtlos in COM-Typen integriert werden, wenn Sie folgende Richtlinien beachten:

  • Klassen müssen Schnittstellen explizit implementieren.

    Obwohl in COM-Interop die Möglichkeit besteht, automatisch eine Schnittstelle zu generieren, die alle Member der Klasse und die der Basisklasse enthält, empfiehlt sich die Verwendung expliziter Schnittstellen. Die automatisch generierte Schnittstelle wird als Klassenschnittstelle bezeichnet. Die Richtlinien finden Sie unter Einführung in die Klassenschnittstelle.

    Zum Einbinden der Schnittstellendefinitionen in den Code können Sie Visual Basic .NET, C# und Managed Extensions for C++ verwenden und müssen nicht IDL (Interface Definition Language) oder Ähnliches verwenden. Detaillierte Informationen zur Syntax finden Sie in der Dokumentation zur Sprache. Beispielcode samt Schnittstellendefinition finden Sie unter .NET-Server.

  • Verwaltete Typen müssen öffentlich sein.

    Nur öffentliche Typen in einer Assembly werden registriert und in die Typbibliothek exportiert. Daher werden auch nur öffentliche Typen in COM angezeigt.

    Verwaltete Typen legen Funktionen für anderen verwalteten Code offen, der möglicherweise nicht für COM verfügbar ist. Beispielsweise werden parametisierte Konstruktoren, statische Methoden und konstante Felder nicht für COM-Clients offen gelegt. Da Daten von Common Language Runtime innerhalb und außerhalb eines Typs gemarshallt werden, können diese auch kopiert oder umgewandelt werden.

  • Alle Methoden, Eigenschaften, Felder und Ereignisse müssen öffentlich sein.

    Die Member öffentlicher Typen müssen ebenfalls öffentlich sein, damit sie in COM angezeigt werden können. Sie können die Sichtbarkeit einer Assembly, eines öffentlichen Typs oder dessen öffentlicher Member mit ComVisibleAttribute einschränken. Standardmäßig werden alle öffentlichen Typen und Member angezeigt.

  • Der Standardkonstruktor der Typen muss öffentlich sein und in COM aktiviert werden.

    Verwaltete, öffentliche Typen sind in COM sichtbar. Allerdings können COM-Clients den Typ ohne öffentlichen Standardkonstruktor (ein Konstruktor ohne Argumente) nicht erstellen. COM-Clients können den Typ aber trotzdem verwenden, wenn er auf andere Weise aktiviert wird.

  • Typen können nicht abstrakt sein.

    Weder COM-Clients noch .NET-Clients können abstrakte Typen erstellen.

Die Vererbungshierarchie eines verwalteten Typs wird beim Exportieren in COM vereinfacht. Zwischen verwalteten und nicht verwalteten Umgebungen bestehen außerdem Unterschiede im Versioning. In COM offen gelegte Typen haben andere Charakteristiken beim Versioning als andere verwaltete Typen.

Siehe auch

Offenlegen von .NET Framework-Komponenten in COM | Einführung in die Klassenschnittstelle | .NET-Server | ComVisibleAttribute | Anwenden von Interop-Attributen | Verpacken einer Assembly für COM