3 Interop Part2

703 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
703
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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 />

×