Практическое использование для «внутреннего» ключевого слова в C # - PullRequest
383 голосов
/ 03 октября 2008

Не могли бы вы объяснить, как на практике использовать ключевое слово internal в C #?

Я знаю, что модификатор internal ограничивает доступ к текущей сборке, но когда и при каких обстоятельствах его следует использовать?

Ответы [ 22 ]

0 голосов
/ 03 октября 2008

Когда у вас есть классы или методы, которые не совсем вписываются в объектно-ориентированную парадигму, которые делают опасные вещи, которые нужно вызывать из других классов и методов под вашим контролем, и которые вы не хотите допускать кто-нибудь еще использует.

public class DangerousClass {
    public void SafeMethod() { }
    internal void UpdateGlobalStateInSomeBizarreWay() { }
}
0 голосов
/ 10 июня 2010

Идея заключается в том, что при проектировании библиотеки только те классы, которые предназначены для использования извне (клиентами вашей библиотеки), должны быть общедоступными. Таким образом, вы можете скрыть классы, которые

  1. Вероятно, изменится в будущих выпусках (если бы они были общедоступными, вы бы взломали код клиента)
  2. бесполезны для клиента и могут вызвать путаницу
  3. Не безопасны (поэтому неправильное использование может очень сильно сломать вашу библиотеку)

и т.д.

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

...