Eintrag kommentierenEintrag bewerten
Dieser Eintrag wurde im Schnitt mit 0 von 5 Punkten bewertet
Erfahrung
Interoperabilität von .NET-Sprachen (Teil 2)
Erfahrung:21843
Externe Quellen zum Thema NEU: Externe Quellen zum Thema suchen 
Beschreibung der Erfahrung
Beispiel I – C# nutzt Visual Basic.NET
Das Beispiel soll an dieser Stelle überschaubar gehalten werden. Ausgangspunkt ist eine Visual Studio.NET Solution, die zwei Projekte enthalten soll:
  • VBInterface: Ist vom Typ Visual Basic.NET Klassenbibliothek und enthält ein VB.NET Interface.

  • CSClass: Ist vom Typ Visual C# Konsolenanwendung, implementiert das im ersten Projekt definierte Interface in einer Klasse und stellt ein kleines Codefragment zur Verfügung, das einige Aufrufe an die Testklasse absetzt.


  • Das Visual Basic.NET Interface
    Das Interface ist denkbar einfach gehalten und definiert nur einige einfache Methoden:

    Public Interface IInterface
       Sub SayHello()
       Sub PrintText(ByVal Msg As String)
       Function GetTime() As DateTime
    End Interface


    Dieses Interface wird in eine Assembly (Klassenbibliothek, Endung DLL) compiliert. Im Folgenden soll gezeigt werden, was der Visual Basic.NET Compiler (vbc.exe) daraus erzeugt. Dazu wird das Tool Werkzeug IL-DASM aus dem .NET Framework SDK verwendet. Es disassembliert die Datei und zeigt den erzeugten IL-Code an. Im folgenden Listing ist der IL-Code der Schnittstelle IInterface gezeigt:

    .class interface public abstract auto ansi IInterface
    {
    } // end of class IInterface

    Die C# Klasse
    Für die Implementierung des Interfaces soll eine C# Klasse dienen. Dazu ist der Solution ein zweites Projekt hinzuzufügen. In diesem Projekt muss nun ein einfacher Verweis auf das Visual Basic Projekt angelegt werden. Danach können die dort definierten Typen verwendet werden. Das folgende Listing zeigt die Implementierung der C# Klasse:

    using System;
    namespace CSClass
    {
    // importiere den Namensraum
    // der referenzierten Assembly
       using VBInterface;

     public class VbInterfaceImpl : IInterface
     {
       public VbInterfaceImpl()
       {
        ...
       }

       #region IInterface Member
       public void SayHello()
       {
        Console.WriteLine("Hello!");
       }

       public void PrintText(string Msg)
       {
        Console.WriteLine("Printing: {0}", Msg);
       }

       public DateTime GetTime()
       {
        return(DateTime.Now);
       }
       #endregion
     }
    }

    Zwischen den hervorgehoben Teilen ist die Implementierung des Interfaces (ebenfalls hervorgehoben) zu sehen. Die C# Klasse erbt nun das VB.NET Interface. Das folgende Listing zeigt den IL-Code der Klassendefinition:

    .class public auto ansi beforefieldinit VbInterfaceImpl
    extends [mscorlib]System.Object
    implements [VBInterface]VBInterface.IInterface
    {
    } // end of class VbInterfaceImpl

    Wie im Listing zu sehen ist, wird dort die Verbindung zum Interface hergestellt. Die Verbindung findet unter Verwendung des Namens der Assembly statt, in der der benötigte Typ definiert ist (in eckigen Klammern). Des Weiteren wird der Typ durch seinen vollständig qualifizierten Namen angegeben (Namensraum + Typname).

    zurück...
    weiter...
    Externe Quellen zum Thema NEU: Externe Quellen zum Thema suchen 
     Eintrag kommentieren 
     Eintrag bewerten 
    Zu dieser Seite wurden noch keine Kommentare oder Bewertungen abgegeben.
     
    Zum Seitenanfang Top Drucken Impressum AGB
    Home

    VSEK ©2001-2012