Galileo Computing <openbook>
Galileo Computing - Programming the Net
Galileo Computing - Programming the Net


C# von Eric Gunnerson
Die neue Sprache für Microsofts .NET-Plattform
C# - Zum Katalog
gp Kapitel 30 Interoperabilität
  gp 30.1 Benutzen von COM-Objekten
  gp 30.2 Von COM-Objekten benutzt werden
  gp 30.3 Aufrufen systemeigener DLL-Funktionen

Kapitel 30 Interoperabilität

Eine der wichtigen Fähigkeiten von C# ist die, mit vorhandenem Code interagieren zu können, unabhängig davon, ob dieser COM-basiert ist oder in einer systemeigenen DLL enthalten ist. Dieses Kapitel bietet einen kurzen Überblick darüber, wie die Interoperabilität funktioniert.


Galileo Computing

30.1 Benutzen von COM-Objekten  downtop

Zum Aufrufen eines COM-Objekts muss zunächst eine Proxyklasse (oder Wrapperklasse) definiert werden, mit der die Funktionen des COM-Objekts festgelegt werden, zusammen mit zusätzlichen Informationen. Dies ist eine recht mühselige Aufgabe, die in den meisten Fällen durch Einsatz des Dienstprogramms tlbimp umgangen werden kann. Dieses Dienstprogramm liest die COM-Typbibliotheksinformationen und erstellt anschließend die Proxyklasse. Dies funktioniert in den meisten Fällen, wenn jedoch eine erweiterte Marshalingsteuerung erforderlich ist, kann die Proxyklasse manuell erstellt werden. In diesem Fall wird über Attribute festgelegt, wie das Marshaling durchgeführt werden soll.

Nachdem die Proxyklasse erstellt wurde, wird diese wie jede andere .NET-Klasse eingesetzt, und die Laufzeitumgebung übernimmt die niederen Arbeiten.


Galileo Computing

30.2 Von COM-Objekten benutzt werden  downtop

Die Laufzeitumgebung ermöglicht das Verwenden von .NET-Objekten anstelle von COM-Objekten. Das Dienstprogramm tlbexp wird zum Erstellen einer Typbibliothek verwendet, mit der die COM-Objekte beschrieben werden, damit andere COM-basierte Programme die Objektschnittstelle identifizieren können. Das Dienstprogramm regasm wird zum Registrieren einer Assemblierung eingesetzt, damit auf diese über COM zugegriffen werden kann. Wenn COM auf eine .NET-Klasse zugreift, übernimmt die Laufzeitumgebung das Erstellen des .NET-Objekts, erstellt die benötigten COM-Schnittstellen und führt ein Marshaling der Daten zwischen der .NET- und der COM-Umgebung durch.


Galileo Computing

30.3 Aufrufen systemeigener DLL-Funktionen  toptop

C# kann über den so genannten »Plattformaufruf« in systemeigenem Code geschriebene Funktionen aufrufen. Die Datei, in der sich die Funktion befindet, wird über das Attribut sysimport angegeben, das auch zum Spezifizieren des Standardzeichenmarshalings verwendet werden kann. In vielen Fällen reicht dieses Attribut aus, wenn jedoch ein Wert als Verweis übergeben wird, kann über die Attribute in und out festgelegt werden, wie der Wert übergeben werden soll.

class Test
{
    [sysimport(dll="user32.dll")]
    public static extern int MessageBoxA(int h, string m,
        string c, int type);
    public static void Main()
    {
        int retval = MessageBoxA(0, "Hello", "Caption", 0);
    }
}

Bei der Ausführung dieses Codeabschnitts wird ein Meldungsfeld angezeigt.

   

Select * from SQL Server 2000




Copyright © Galileo Press GmbH 2001 - 2002
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, fon: 0228.42150.0, fax 0228.42150.77, info@galileo-press.de