Как сделать свойство vb.net видимым только в определенном пространстве имен? - PullRequest
0 голосов
/ 20 апреля 2009

Я получил некоторый набор базовых классов в одном пространстве имен и несколько наборов производных классов в других пространствах имен. Все в одном проекте. Что-то вроде:

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, но оно сделало это свойство видимым, когда я тоже создаю экземпляры производных классов.

Итак ... есть ли способ скрыть некоторые свойства при использовании производных классов при возможности использовать их с помощью базового класса?

Ответы [ 2 ]

2 голосов
/ 20 апреля 2009

.NET не имеет модификаторов видимости на основе пространства имен.

Вы могли бы потенциально переместить все в этом пространстве имен в его собственный проект библиотеки классов и иметь его в качестве Friend члена - или вы могли бы просто жить с ним, имеющим большую видимость, чем вы хотите.

0 голосов
/ 20 апреля 2009

Я полагаю, что вы хотите использовать интерфейс в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...