Как скрыть классы от внешних пространств имен? Что-то вроде модификатора защищенного пакета в Java - PullRequest
1 голос
/ 03 мая 2010

В Java легко "спрятать" классы за пределами вашего пакета (пространства имен), так как вы можете определить их как защищенные пакетами. Кажется, в C # нет эквивалента модификатора ключевого слова. Есть ли способ, которым я мог бы подражать этому поведению в C #? У меня есть пара классов, которые я бы не хотел, чтобы остальная часть сборки знала. Это нормально для классов в одном и том же пространстве имен, но я бы хотел, чтобы они были скрыты от остальной части библиотеки / приложения.

Я знаю ключевое слово internal, но оно скрывает классы, только если вы пытаетесь получить к ним доступ из-за пределов вашей сборки. Это не совсем мой случай, так как я бы хотел, чтобы все было склеено в одном .DLL / .EXE.

Спасибо

1 Ответ

3 голосов
/ 03 мая 2010

Единственный способ, которым я мог бы подумать о достижении этого, - это поместить классы, которые вы хотите, чтобы они были «упакованы», в отдельную сборку вместе с классами, которые используют те, которые вы хотите, чтобы они были доступны. Отметьте эти классы как внутренние, и они видны только тем частям проекта, которые действительно в этом нуждаются.

Учитывая тот факт, что вам требуется это в одной сборке, я склонен думать, что сборка делает слишком много, и такой рефакторинг может быть полезным.

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