Frage zu Schnittstelle

29/12/2009 - 02:18 von Peter Gast | Report spam
ich habe 2 Klassen, die einige gleiche Properties haben. Diese habe ich
mittels Interface eingebunden. Ziel ist, mit EINER Zuweisung die gemeinsamen
Properties austauschen zu können. Ich dachte das geht mit Interfaces aber
irgendwie klappt das nicht. Oder habe ich den Zweck von IF noch nicht ganz
verstanden? In die Basisklasse wollte ich übrigens die Props nicht packen,
da diese BK in vielen anderen Klassen gebraucht, wird die Schnittmengenprops
dieser beiden Klassen aber nur dort gebraucht werden.

Danke Peter


Interface IGemeinsam
Property p2() As String
Property p3() As SpezialKlasse
End Interface

Class Small
Inherits BasisKlasse
Implements IGemeinsam
Public Property p1() As Integer
Public Property p2() As String Implements IGemeinsam.p2
Public Property p3() As Einheiten.Einheit Implements IGemeinsam.p3
End Class

Class Big
Inherits BasisKlasse
Implements IGemeinsam
Public Property p1() As String
Public Property p2() As String Implements IGemeinsam.p2
Public Property p3() As SpezialKlasse Implements IGemeinsam.p3
Public Property p4() As String
Public Property p5() As Double
End Class


Class test
Sub Main()
Dim cs As New Small
Dim cb As New Big
cs = DirectCast(cb, IGemeinsam)
End Sub
End Class
 

Lesen sie die antworten

#1 Harald M. Genauck
29/12/2009 - 10:44 | Warnen spam
Hallo Peter,

ich habe 2 Klassen, die einige gleiche Properties haben. Diese habe
ich mittels Interface eingebunden. Ziel ist, mit EINER Zuweisung die
gemeinsamen Properties austauschen zu können. Ich dachte das geht
mit Interfaces aber irgendwie klappt das nicht. Oder habe ich den
Zweck von IF noch nicht ganz verstanden? In die Basisklasse wollte
ich übrigens die Props nicht packen, da diese BK in vielen anderen
Klassen gebraucht, wird die Schnittmengenprops dieser beiden Klassen
aber nur dort gebraucht werden.

Interface IGemeinsam
Property p2() As String
Property p3() As SpezialKlasse
End Interface

Class Small
Inherits BasisKlasse
Implements IGemeinsam
Public Property p1() As Integer
Public Property p2() As String Implements IGemeinsam.p2
Public Property p3() As Einheiten.Einheit Implements
IGemeinsam.p3
End Class

Class Big
Inherits BasisKlasse
Implements IGemeinsam
Public Property p1() As String
Public Property p2() As String Implements IGemeinsam.p2
Public Property p3() As SpezialKlasse Implements IGemeinsam.p3
Public Property p4() As String
Public Property p5() As Double
End Class


Class test
Sub Main()
Dim cs As New Small
Dim cb As New Big
cs = DirectCast(cb, IGemeinsam)
End Sub
End Class



Was genau ist denn Dein Problem?

Das einzige, was ich da sehen und was nicht funktionieren kann:

In der Klasse Big hat p3 den korrekten, der Vorgabe im Interface
entsprechenden Datentyp.

In der Klasse Small soll p3 dagegen den Datentyp Einheiten.Einheit
haben, was der Vorgabe des Datentyps SpezialKlasse für p3 im Interface
IGemeinsam widerspricht.

Ob das Absicht ist und was Du ggfs. mit diesem Unterschied aber
bezwecken willst, geht aus Deiner Beschreibung leider nicht hervor.


Viele Grüße

Harald M. Genauck

"VISUAL STUDIO one" - http://www.visualstudio1.de (Chefredakteur)
"ABOUT Visual Basic" - http://www.aboutvb.de (Hrsg. + Redaktion)

Ähnliche fragen