Я хочу, чтобы свойство класса изменялось, когда подкласс реализован (т. Е. Свойство зависит от того, к какому классу он принадлежит).Установить или переопределить свойство readonly базового слоя
В настоящее время у меня есть:
Public MustInherit Class MyBaseClass
Public ReadOnly name As String
...
Sub New()
name = "None"
End Sub
End Class
Public Class MyClassV0_0 : Inherits MyBaseClass
Public Shadows ReadOnly name As String
...
Sub New()
name = "MyClass v0.0"
End Sub
End Class
я получаю эти результаты, когда это называется в моей основной код:
Dim classInstance As MyBaseClass = New MyClassV0_0
Debug.Print(classInstance.name)
Debug принты: None
Однако я ожидал MyClass v0.0
для печати. Есть ли способ сделать это?
Отметьте, что мне нужно classInstance
быть MyBaseClass
- если бы я заявлял, что это MyClassV0_0
, эта проблема не возникла бы для меня.
Я получаю: '' MustOverride' недопустим при объявлении переменной-члена '. в компиляторе. То же самое касается «Overridable». – Shuri2060
Упс не видел, что это поле, а не как общественное. Хорошо, если вам нужна какая-то проверка в какой-то момент в иерархии, это должно быть свойство. Вместо этого, если все экземпляры одного и того же типа имеют одинаковое «имя», это должен быть общий член – Sehnsucht
Да - все экземпляры класса будут иметь одинаковое «имя». На самом деле, я привык объявлять переменные, как показано в моем примере кода, и никогда не чувствовал необходимости объявлять их как «Свойство». Я предположил, что нет никакой разницы, кроме хлопот написания методов get/set. – Shuri2060