Ich habe Klassen wie folgt strukturiert:Eigenschaftsmodifikatoren
Public MustInherit Class A
' several properties
End Class
Public Class B
Inherits A
' several properties
End Class
Public MustInherit Class C
Protected _X As A
Public ReadOnly Property X As A
Get
Return _X
End Get
End Property
End Class
Public Class D
Inherits C
Private _X As B
Public ReadOnly Property X As B
Get
Return _X
End Get
End Property
Sub New
_X = New B
End Sub
End Class
Gibt es einen Modifikator ich auf Eigenschaft X in der Klasse D verwenden kann, die X von einem als B von einer Instanz von D und A wurde zurück verursacht Instanz von D, die als C bewertet wird?
heißt
Dim d As New D
Response.Write((d.X Is Nothing) & "<br>")
Dim c As C = d
Response.Write(c.X Is Nothing)
In beiden Fällen I X will nicht Nichts
Mir ist klar sein, ich D ändern könnte wie folgt aussehen:
Public Class D
Inherits C
Private __X As B
Public ReadOnly Property X As B
Get
Return __X
End Get
End Property
Sub New
__X = New B
_X = __X
End Sub
End Class
Gibt es eine saubere Lösung?
ich es mir selbst nicht versucht haben, aber ich glaube, wenn Sie diesen Code tatsächlich kompilieren Sie gesagt werde 'Shadows' angeben oder Sie brauchen 'C' des 'X' auf' Overridable ändern '. Ich habe nicht überprüft, aber ich _think_ 'Shadows' wird tun, was Sie wollen. –
Sie haben Recht mit dem Compiler - es heißt 'Overloads' zu verwenden, aber es ist auch mit' Shadows' zufrieden. Leider löst keiner das Problem. – ic3b3rg