У меня есть классы структурированы следующим образом:Модификаторы недвижимости
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
Есть ли модификатор можно использовать на имущество X в классе D, который заставит X должен быть возвращен в качестве B из экземпляра D и А из экземпляр D, который оценивается как C?
т.е.
Dim d As New D
Response.Write((d.X Is Nothing) & "<br>")
Dim c As C = d
Response.Write(c.X Is Nothing)
В обоих случаях я хочу X не не быть ничего
Я понимаю, что я мог бы изменить 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' или вам нужно изменить' 'x' C' на' Overridable '. Я не проверял, но я хочу, чтобы тень делала то, что ты хочешь. –
Вы правы в отношении компилятора - он говорит, что использует «Overloads», но он также доволен «Shadows». К сожалению, никто не решает проблему. – ic3b3rg