3. Tlbimp vs. Manueller Import Tlbimp generiert einen COM to .net Wrapper COM CoClasseswerdenzu C# KlassenmitparameterlosemKonstruktorkonvertiert COM structswerdenzu C# structsmit public fields konvertiert Tlbimp kann nicht verwendet werden wenn Keine Typelib vorhanden ist Tlbimp Definitionen nicht verarbeiten kann Alternativer Ansatz Manueller Import
4. Manueller Import - Attribute ComImport – MarkierteineKlasseals extern implementierte COM Klasse. Guid – Setzt den universally unique identifier (UUID) füreineKlasseoderein Interface InterfaceType – Legt fest ob ein Interface von IDispatchoderIUnknownerbt PreserveSig – Legt fest ob einnativerRückgabewert von einem HRESULT zueiner.net Exception umgewandeltwerdensoll
5. Manueller Import – COM CoClass CoClass als Klasse deklarieren Darf von keineranderenKlasseerben Darfkeine Interfaces implementieren GUID Attributsetzen Instanziieren mit new Schlüsselwort C# Äquivalent zu CoCreateInstance Parameterloser Konstruktor
6. Manueller Import – COM Interface C# Interface erstellen mit Attributen COMImport GUID Muss Interface Member Funktionen in der exakten COM interface Reihenfolge enthalten Ggf. Standard Marshalling mit MarshalAs überschreiben Exception Mapping zwischen COM & .net festlegen
8. Marshalling Standardmarshalling konvertiert Datentypen von COM in .net & viceversa Anpassung von Marshalling ist ggf. notwendig Verwenden von MarshalAs um Marshalling anzupassen
9. Unmanaged Events COM Events werden wie C# Events behandelt Events nach COM auslösen von C# aus