Уровень доступа к недвижимости в частном классе
Для частного класса я должен объявить свою собственность как общедоступную или дружную (внутренняя в C#)? Мой закрытый класс недоступен для других классов, кроме родительского.
2 ответа
В общем, старайтесь сохранить инкапсуляцию без изменений. Отношения между вашими классами должны основываться на принципах "необходимо знать".
Поскольку я не знаком с вашим дизайном приложения, я уверен, что упрощаю, но я бы задал себе следующий вопрос:
Является ли родительский класс единственным классом, который должен знать подкласс? если так, то должно быть
private
,Если нет, все ли другие сущности, которым нужно знать о подклассе, находятся в том же проекте? если так, то должно быть
internal
,Если есть объекты, внешние по отношению к проекту, которые должны знать о подклассе, это должно быть
public
,
Что касается свойств. Если вы решили иметь подкласс private
нет смысла делать свойства public
,
Единственный объект, который может иметь экземпляр класса, это родительский класс, который находится в том же проекте, и, следовательно, internal
должно быть достаточно для свойств.
Заметка
C# не имеет friend
модификатор. Вместо этого вы можете использовать internal
или Самый похожий, но не менее элегантный вариант: InternalsVisibleTo
Так как ваш класс (вложенный) private
единственный, кто может получить к нему доступ - это его контейнер (базовый или родительский класс). В этом случае public
или же internal
(Friend
в VB) не имеет никакого значения, так как единственный, кто может получить доступ к вложенному классу, это его родитель. В общем, если когда-нибудь вы захотите изменить модификатор доступа на public
тогда хорошо бы предвидеть это сейчас и выбирать между internal
а также public
, Это просто, если вы хотите, чтобы члены вашего вложенного класса были видны только внутри сборки, где он определен, тогда используйте internal
в противном случае рассмотрите возможность использования public
,