我有結構化這樣的類:性質調節
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
是否有修改,我可以在d類屬性X使用,這將導致X從得自d的實例和返回爲B評估爲C的D的實例?
即
Dim d As New D
Response.Write((d.X Is Nothing) & "<br>")
Dim c As C = d
Response.Write(c.X Is Nothing)
在這兩種情況下,我要X到不能爲Nothing
我知道我可以修改d如下:
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
是否有一個清晰的解決方案?
我還沒有嘗試過我自己,但我相信,如果你確實編譯這段代碼,你會被告知到指定'Shadows'或者你需要改變'C'的'X'爲'可覆蓋'。我沒有檢查,但我_think_「陰影」會做你想做的。 – 2012-03-30 01:18:43
你對編譯器是正確的 - 它說使用'Overloads',但它也很滿意'Shadows'。不幸的是,沒有人解決這個問題。 – ic3b3rg 2012-03-30 01:37:59