Уровень доступа к недвижимости в частном классе

Для частного класса я должен объявить свою собственность как общедоступную или дружную (внутренняя в C#)? Мой закрытый класс недоступен для других классов, кроме родительского.

2 ответа

В общем, старайтесь сохранить инкапсуляцию без изменений. Отношения между вашими классами должны основываться на принципах "необходимо знать".

Поскольку я не знаком с вашим дизайном приложения, я уверен, что упрощаю, но я бы задал себе следующий вопрос:

  • Является ли родительский класс единственным классом, который должен знать подкласс? если так, то должно быть private,

  • Если нет, все ли другие сущности, которым нужно знать о подклассе, находятся в том же проекте? если так, то должно быть internal,

  • Если есть объекты, внешние по отношению к проекту, которые должны знать о подклассе, это должно быть public,

Что касается свойств. Если вы решили иметь подкласс privateнет смысла делать свойства public,
Единственный объект, который может иметь экземпляр класса, это родительский класс, который находится в том же проекте, и, следовательно, internal должно быть достаточно для свойств.

Заметка
C# не имеет friend модификатор. Вместо этого вы можете использовать internalили Самый похожий, но не менее элегантный вариант: InternalsVisibleTo

Так как ваш класс (вложенный) private единственный, кто может получить к нему доступ - это его контейнер (базовый или родительский класс). В этом случае public или же internal (Friend в VB) не имеет никакого значения, так как единственный, кто может получить доступ к вложенному классу, это его родитель. В общем, если когда-нибудь вы захотите изменить модификатор доступа на public тогда хорошо бы предвидеть это сейчас и выбирать между internal а также public, Это просто, если вы хотите, чтобы члены вашего вложенного класса были видны только внутри сборки, где он определен, тогда используйте internal в противном случае рассмотрите возможность использования public,

Другие вопросы по тегам