我有结构化这样的类:性质调节
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