TypeCasting i VB.NET

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



t