Interoperation, Teil 2<br />C# Workshop TU Darmstadt<br />Qiong Wu – Microsoft Student Partner <br />
CCW in C++ verwenden<br />
Tlbimp vs. Manueller Import<br />Tlbimp generiert einen COM to .net Wrapper<br />COM CoClasseswerdenzu C# Klassenmitparame...
Manueller Import - Attribute<br />ComImport – MarkierteineKlasseals extern implementierte COM Klasse.<br />Guid – Setzt de...
Manueller Import – COM CoClass<br />CoClass als Klasse deklarieren<br />Darf von keineranderenKlasseerben<br />Darfkeine I...
Manueller Import – COM Interface<br />C# Interface erstellen mit Attributen<br />COMImport<br />GUID<br />Muss Interface M...
CoClasses & Interfaces in .net verwenden<br />CoClass instanziieren<br />Entsprechendes Interface casten<br />
Marshalling<br />Standardmarshalling konvertiert Datentypen von COM in .net & viceversa<br />Anpassung von Marshalling ist...
Unmanaged Events<br />COM Events werden wie C# Events behandelt<br />Events nach COM auslösen von C# aus<br />
Customize Wrappers<br />RCW Erstellen<br />RCW Disassemblieren<br />Source anpassen<br />RCW Neu kompilieren<br />
Nächste SlideShare
Wird geladen in …5
×

3 Interop Part2

706 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
706
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
3
Aktionen
Geteilt
0
Downloads
0
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

3 Interop Part2

  1. 1. Interoperation, Teil 2<br />C# Workshop TU Darmstadt<br />Qiong Wu – Microsoft Student Partner <br />
  2. 2. CCW in C++ verwenden<br />
  3. 3. Tlbimp vs. Manueller Import<br />Tlbimp generiert einen COM to .net Wrapper<br />COM CoClasseswerdenzu C# KlassenmitparameterlosemKonstruktorkonvertiert<br />COM structswerdenzu C# structsmit public fields konvertiert<br />Tlbimp kann nicht verwendet werden wenn<br />Keine Typelib vorhanden ist<br />Tlbimp Definitionen nicht verarbeiten kann<br />Alternativer Ansatz<br />Manueller Import<br />
  4. 4. Manueller Import - Attribute<br />ComImport – MarkierteineKlasseals extern implementierte COM Klasse.<br />Guid – Setzt den universally unique identifier (UUID) füreineKlasseoderein Interface<br />InterfaceType – Legt fest ob ein Interface von IDispatchoderIUnknownerbt<br />PreserveSig – Legt fest ob einnativerRückgabewert von einem HRESULT zueiner.net Exception umgewandeltwerdensoll<br />
  5. 5. Manueller Import – COM CoClass<br />CoClass als Klasse deklarieren<br />Darf von keineranderenKlasseerben<br />Darfkeine Interfaces implementieren<br />GUID Attributsetzen<br />Instanziieren mit new Schlüsselwort<br />C# Äquivalent zu CoCreateInstance<br />Parameterloser Konstruktor<br />
  6. 6. Manueller Import – COM Interface<br />C# Interface erstellen mit Attributen<br />COMImport<br />GUID<br />Muss Interface Member Funktionen in der exakten COM interface Reihenfolge enthalten<br />Ggf. Standard Marshalling mit MarshalAs überschreiben<br />Exception Mapping zwischen COM & .net festlegen<br />
  7. 7. CoClasses & Interfaces in .net verwenden<br />CoClass instanziieren<br />Entsprechendes Interface casten<br />
  8. 8. Marshalling<br />Standardmarshalling konvertiert Datentypen von COM in .net & viceversa<br />Anpassung von Marshalling ist ggf. notwendig<br />Verwenden von MarshalAs um Marshalling anzupassen<br />
  9. 9. Unmanaged Events<br />COM Events werden wie C# Events behandelt<br />Events nach COM auslösen von C# aus<br />
  10. 10. Customize Wrappers<br />RCW Erstellen<br />RCW Disassemblieren<br />Source anpassen<br />RCW Neu kompilieren<br />
  11. 11. Links<br />.net Reflector<br />http://www.red-gate.com/products/reflector/<br />Windows SDK<br />http://msdn.microsoft.com/de-de/windows/dd146047(en-us).aspx<br />

×