vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Problem mit Vererbung und Schnittstellen 
Autor: Schü
Datum: 05.11.14 08:30

Hallo!

habe mein Problem mal durch 2 einfache Klassen und ein Interface veranschaulicht (in der Realität sind die Klassen viel komplexer, aber das ist ja egal)
Im Grunde habe ich ein Interface definiert, was die Eigenschaft Höhe hat. Dann eine Reihe, die ein Objekt enthält, das IHöhe implementieren muss.
Letztlich die Klasse Fläche, die eine Reihe enthält. Nun soll über eine Funktion einfach
AnzahlReihen * Reihe.Höhe zurückgegeben werden, aber da steckt der Teufel drin...

Public Interface IHöhe
    Property Höhe As Double
End Interface
 
Public Class Reihe(Of T As IHöhe)
    Private mInternObj As T
 
    Public Property Obj As T
        Get
            Return mInternObj
        End Get
        Set(value As T)
            mInternObj = value
        End Set
    End Property
End Class
 
Public Class Fläche(Of T As IHöhe)
    Private mReihe As Reihe(Of T)
    Private mAnzReihen As Integer
 
    Public Sub New(ByVal R As Reihe(Of T), ByVal Anzahl As Integer)
        mReihe = R
        mAnzReihen = Anzahl
    End Sub
 
    Public ReadOnly Property Anzahl() As Integer
        Get
            Return mAnzReihen
        End Get
    End Property
 
    Public Function GetFläche() As Double
        'Hier wird die Fehlermeldung angezeigt: "Der Wert vom Typ Reihe(Of T) 
        'kann nicht in Reihe(Of IHöhe) konvertiert werden."
        ' obwohl doch mReihe die Schnittstelle IHöhe implementiert!
        Return m_GetFläche(mReihe, mAnzReihen)
    End Function
 
    Private Function m_GetFläche(ByVal R As Reihe(Of IHöhe), ByVal Länge As _
      Double) As Double
        If R.Obj Is Nothing Then Return 0
        Return R.Obj.Höhe * Länge
    End Function
End Class
Leider akzeptiert der Compiler nicht die Übergabe von mReihe in der Funktion m_GetFläche.
Der Compiler sollte doch wissen, das mReihe als Reihe(Of T) und T als IHöhe definiert ist.
Ich verstehe den Sinn nicht. Muss ich hier Casting einsetzen und Warum?

Danke für jede Hilfe!

Schü
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Problem mit Vererbung und Schnittstellen2.139Schü05.11.14 08:30
Re: Problem mit Vererbung und Schnittstellen1.437Manfred X05.11.14 08:53
Re: Problem mit Vererbung und Schnittstellen1.419Schü05.11.14 09:08
Re: Problem mit Vererbung und Schnittstellen1.449Manfred X05.11.14 09:12
Re: Problem mit Vererbung und Schnittstellen1.409ModeratorDaveS05.11.14 08:55
Re: Problem mit Vererbung und Schnittstellen1.383Schü05.11.14 09:09
Re: Problem mit Vererbung und Schnittstellen1.387Schü05.11.14 09:14
Re: Problem mit Vererbung und Schnittstellen1.479Manfred X05.11.14 09:23
Re: Problem mit Vererbung und Schnittstellen1.392Schü05.11.14 14:21
Re: Problem mit Vererbung und Schnittstellen1.432Manfred X06.11.14 07:13
Re: Problem mit Vererbung und Schnittstellen1.386Schü06.11.14 11:45
Re: Problem mit Vererbung und Schnittstellen1.525Manfred X06.11.14 11:58
Re: Problem mit Vererbung und Schnittstellen1.399Schü06.11.14 12:02
Re: Problem mit Vererbung und Schnittstellen1.493Manfred X06.11.14 12:12
Re: Problem mit Vererbung und Schnittstellen 1/31.437Schü06.11.14 14:29
Re: Problem mit Vererbung und Schnittstellen 2/31.427Schü06.11.14 14:30
Re: Problem mit Vererbung und Schnittstellen 3/31.498Schü06.11.14 14:31
Re: Problem mit Vererbung und Schnittstellen 4/31.369Schü06.11.14 14:32
Objektmodell und Vererbung1.420Manfred X06.11.14 15:23
Re: Objektmodell und Vererbung1.375Schü12.11.14 17:58
Re: Objektmodell und Vererbung1.434Manfred X12.11.14 18:39
Re: Objektmodell und Vererbung1.374Schü13.11.14 09:41
Re: Objektmodell und Vererbung1.348Manfred X13.11.14 11:05

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel