Существует ли в качестве передового опыта способ работы с переменной-членом в производном классе, являющемся типом, который был объявлен в родительском классе?
Например, здесь приведены упрощенные классы «Производитель» и «Автомобиль»:
Public Class Manufacturer
Protected _name As String
Protected _country As String
End Class
Public Class Car
Protected _manufacturer As Manufacturer
Sub New(manufacturer)
_manufacturer = manufacturer
End Sub
End Class
Если я реализую следующие производные классы:
Public Class Honda
Inherits Manufacturer
Sub New()
_name = "Honda"
_country = "Japan"
End Sub
Public Property Prefecture As String
End Class
Public Class Accord
Inherits Car
Sub New(manufacturer)
MyBase.New(manufacturer)
' This doesn't work
_manufacturer.Prefecture = "Tokyo"
End Sub
End Class
Единственный известный мне способ обойти эту проблему - привести _manufacturer
к Honda
:
Dim myManufacturer As Honda = manufacturer
myManufacturer.Prefecture = "Tokyo"
Другой подход, который я рассмотрел, заключается в создании оболочки для объекта _manufacturer
:
Sub New(manufacturer As Honda)
MyBase.New(manufacturer)
MyManufacturer.Prefecture = "Tokyo"
End Sub
Private ReadOnly Property MyManufacturer() As Honda
Get
Return _manufacturer
End Get
End Property
С ним немного проще работать.
Это дополнительные шаги, которые янадеюсь, что смогу избежатьСпасибо за любые указатели, которые вы можете дать мне.