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
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
Anpassen von COM-Aufrufwrappern