Tags:
visual-basic
Hej jeg har et spørgsmål, jeg håber nogen kan besvare. For at illustrere problement, viser jeg først koden:
' Interface IPerson
Option Explicit
Public Interface IPerson
Property FirstName() As String
Property LastName() As String
End Interface
' Class for Person, that implements IPerson
Option Explicit
Public Class Person
Implements IPerson
Private _FirstName As String
Private _LastName As String
Public Property FirstName() As String Implements AppTester.IPerson.FirstName
Get
Return _FirstName
End Get
Set(ByVal Value As String)
_FirstName = Value
End Set
End Property
Public Property LastName() As String Implements AppTester.IPerson.LastName
Get
Return _LastName
End Get
Set(ByVal Value As String)
_LastName = Value
End Set
End Property
End Class
' Interface IMan
Option Explicit
Public Interface IMan
Inherits IPerson
Property HasChildren() As Boolean
End Interface
' Class for Man, that inherits Person class and implements IMan
Option Explicit
Public Class Man
Inherits Person
Implements IMan
Private _HasChildren As Boolean
Public Property HasChildren() As Boolean Implements AppTester.IMan.HasChildren
Get
Return _HasChildren
End Get
Set(ByVal Value As Boolean)
_HasChildren = Value
End Set
End Property
End Class
Ovenstående kode vil jeg mene er ganske selvforklarende. Problemet opstår i følgende kode, som jeg kalder fra en sub et andet sted i projektet:
Dim oPerson As IPerson
Dim oMan As IMan
oPerson = New Person()
oMan = oPerson
Det er den sidste linje kode, der kommer med en Exception. "Specified cast is not valid". Jeg forstår ikke helt hvorfor? Jeg har læst om downcasting og upcasting, men jeg er ikke stødt på en løsning endnu. Jeg håber nogen, kan komme med en forklaring på, hvorfor "oMan = oPerson" kommer med den fejl...
På forhånd tak.
Carsten