Die Community zu .NET und Classic VB.
Menü

Tipp-Upload: VB.NET 0160: Mehrfachvererbung

 von 

Hinweis zum Tippvorschlag  

Dieser Vorschlag wurde noch nicht auf Sinn und Inhalt überprüft und die Zip-Datei wurde noch nicht auf schädlichen Inhalt hin untersucht.
Bitte haben Sie ein wenig Geduld, bis die Freigabe erfolgt.

Über den Tipp  

Dieser Tippvorschlag ist noch unbewertet.

Der Vorschlag ist in den folgenden Kategorien zu finden:

  • Sonstiges

Dem Tippvorschlag wurden folgende Schlüsselwörter zugeordnet:
Mehrfachvererbung, <Extension()>, Generik, Interface

Damit er übernommen werden kann, müssen noch Änderungen daran vorgenommen werden. Sofern Sie der Autor sind, können Sie sich anmelden, um die Liste einzusehen.

Der Vorschlag wurde erstellt am: 16.12.2007 12:26.
Die letzte Aktualisierung erfolgte am 16.12.2007 12:26.

Zurück zur Übersicht

Beschreibung  

wird von VB .NET bekanntermaßen nicht unterstützt.

Was man allerdings machen kann, ist über das <Extension()>-Attribut (VB9) bestimmte Methoden an ein Interface gebunden zu einer Klasse hinzuzufügen.

Schöne Mehrfachvererbung wie in C++ bekommt man damit zwar nicht hin, aber wenigstens etwas ...

Schwierigkeitsgrad

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

Download:

Download des Beispielprojektes [7,37 KB]

' Dieser Source stammt von http://www.activevb.de
' und kann frei verwendet werden. Für eventuelle Schäden
' wird nicht gehaftet.

' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
' Ansonsten viel Spaß und Erfolg mit diesem Source!
'
' Beachten Sie, das vom Designer generierter Code hier ausgeblendet wird.
' In den Zip-Dateien ist er jedoch zu finden.

' ------- Anfang Projektdatei Mehrfachvererbung.vbproj -------
' ----------------- Anfang Datei Module1.vb  -----------------
Imports System.Runtime.CompilerServices

Interface Flugzeug

End Interface

<HideModuleName()> Module mdlFlugzeug

    <Extension()> _
        Sub Fliegen(Of T As Flugzeug)(ByVal Flugzeug As T)

        Console.WriteLine("Ich fliege")

    End Sub

End Module

Interface Auto

    Property Name() As String

End Interface

<HideModuleName()> Module mdlAuto

    <Extension()> _
        Sub Fahren(Of T As Auto)(ByVal Auto As T)

        Console.WriteLine("Ich fahre")

    End Sub

    <Extension()> _
        Sub ZeigeModellname(Of T As Auto)(ByVal Auto As T)

        Console.WriteLine("Mein Modellname lautet: {0}", Auto.Name)

    End Sub

End Module

Class FlugAuto

    Implements Auto, Flugzeug

    Private mName As String

    Public Sub New(ByVal tmpName As String)

        Name = tmpName

    End Sub

    Property Name() As String Implements Auto.Name
        Get
            Return mName

        End Get

        Set(ByVal value As String)
            mName = value

        End Set

    End Property

End Class

Module Module1

    Sub Main()

        Dim FlugAuto As New FlugAuto("SuperFlugauto")

        FlugAuto.Fahren()
        FlugAuto.Fliegen()
        FlugAuto.ZeigeModellname()

        Dim Auto As Auto = FlugAuto
        Dim Flugzeug As Flugzeug = FlugAuto

        Auto.Fahren()
        Flugzeug.Fliegen()

        Console.ReadKey()

    End Sub

End Module

' ------------------ Ende Datei Module1.vb  ------------------
' -------- Ende Projektdatei Mehrfachvererbung.vbproj --------

	

Diskussion  

Diese Funktion ermöglicht es, Fragen, die die Veröffentlichung des Tipps betreffen, zu klären, oder Anregungen und Verbesserungsvorschläge einzubringen. Nach der Veröffentlichung des Tipps werden diese Beiträge nicht weiter verlinkt. Allgemeine Fragen zum Inhalt sollten daher hier nicht geklärt werden.
Folgende Diskussionen existieren bereits

Um eine Diskussion eröffnen zu können, müssen sie angemeldet sein.