Tipp-Upload: VB.NET 0160: Mehrfachvererbung
von Dario
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.
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 |
Verwendete API-Aufrufe: |
Download: |
' 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.