Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
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

769 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

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

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

×