Я получил некоторый набор базовых классов в одном пространстве имен и несколько наборов производных классов в других пространствах имен. Все в одном проекте. Что-то вроде:
Namespace Base
Public Class BaseElement
Protected Friend Readonly Property SubElements() as BaseElements
End Class
End Namespace
...
Namespace Books
Public Class Book
Inherits Base.BaseElement
Public Readonly Property Pages() as Pages
return MyBase.SubElements
End Property
End Class
End Namespace
У меня есть несколько производных классов, и я хочу, чтобы у них были легко понятные свойства, а не .SubElements.
ОК, это можно сделать, объявив .SubElements как Защищенные в классе BaseElement. Но в этом случае я не могу получить доступ к этому свойству из других классов в пространстве имен Base, которые не являются производными от него.
Я попытался добавить ключевое слово Friend, но оно сделало это свойство видимым, когда я тоже создаю экземпляры производных классов.
Итак ... есть ли способ скрыть некоторые свойства при использовании производных классов при возможности использовать их с помощью базового класса?