Share via


Anpassen von Aufrufwrappern der Common Language Runtime

Die Common Language Runtime erzeugt einen durch die Laufzeit aufrufbaren Wrapper (RCW, Runtime Callable Wrapper) aus den Metadaten in einer Interop-Assembly. Im Gegensatz zu anderen Assemblys werden Interop-Assemblys durch das Importieren von Typbibliotheken generiert. Zwar wird durch den Importprozess in der Regel eine genaue Interop-Assembly erstellt, in einigen Fällen können (oder müssen) Sie jedoch die Interop-Assembly ändern, um einen benutzerdefinierten RCW zu erstellen.

Es gibt mehrere Gründe, die dafür sprechen, einen RCW anzupassen, beispielsweise:

  • Ein oder mehrere Typen benötigen zusätzliche Marshallinginformationen.

  • Eine Typbibliothek enthält viele spezielle Typen, die vom Marshaller nicht erkannt werden.

  • Eine große Typbibliothek kann Typen enthalten, die für eine Anwendung nicht erforderlich sind. Nicht erforderliche Typen müssen möglicherweise nicht mehr bereitgestellt werden, wenn Sie eine Interop-Assembly aus verwaltetem Quellcode erstellen.

  • Nicht erforderliche Typen müssen möglicherweise nicht mehr bereitgestellt werden, wenn Sie über RCW-Quellcode verfügen, der einen Teil der Typen in einer großen Typbibliothek enthält.

Sie können eine Typbibliothek als verwaltete DLL importieren, ohne den Wrapper anzupassen (siehe links in der unten stehenden Abbildung). Darüber hinaus haben Sie die Möglichkeit, einen benutzerdefinierten Wrapper zu erstellen.

Marshallinginformationen in importierten Typbibliotheken

Type Library Importer-Tool

Wenn Sie den durch die Laufzeit aufrufbaren Wrapper mit zusätzlichen oder anderen Marshallinganweisungen anpassen müssen, haben Sie zwei Möglichkeiten:

  • Bearbeiten der Interop-Assembly, indem Sie nach der problematischen Syntax suchen und diese durch eine andere Syntax ersetzen. Diese Option eignet sich am besten für kleinere Marshallingänderungen.

  • Manuelles Erstellen eines Wrappers basierend auf einer vorhandenen IDL-Datei (IDL, Interface Definition Language-Datei – Sprache für die Schnittstellendefinition) oder Typbibliothek. Das manuelle Deklarieren von COM-Typen ist schwierig und erfordert ausreichende Kenntnisse über das Type Library Importer-Tool (Tlbimp.exe), das Standardverhalten des Interop-Marshallers und COM. Diese Herangehensweise eignet sich am besten, wenn Sie über eine gesamte Bibliothek mit spezialisierten Typen verfügen oder den RCW-Quellcode benötigen.

Siehe auch

Aufgaben

Gewusst wie: Bearbeiten von Interop-Assemblys

Gewusst wie: Manuelles Erstellen von Wrappern

Konzepte

COM-Datentypen

Anpassen von COM-Aufrufwrappern

Weitere Ressourcen

Marshallen von Daten mit COM-Interop