Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
| Свойство | Значение |
|---|---|
| Идентификатор правила | CA1034 |
| Заголовок | Вложенные типы не должны быть видны |
| Категория | Проектирование |
| Исправление является критическим или не критическим | Срочное |
| Включен по умолчанию в .NET 10 | Нет |
| Применимые языки | C# и Visual Basic |
Причина
Тип, видимый извне, содержит объявление типа, видимого извне. Это правило не распространяется на вложенные перечисления, защищенные типы и шаблоны построителя.
Описание правила
Вложенный тип — это тип, объявленный в пределах другого типа. Вложенные типы удобно использовать для инкапсуляции закрытых сведений о реализациях содержащего их типа. Для данной цели вложенные типы не должны быть видимы извне.
Не используйте внешние видимые вложенные типы для логической группировки или во избежание конфликтов имен. Вместо них следует использовать пространства имен.
Вложенные типы включают в себя понятие доступности членов, которое некоторые программисты не всегда четко понимают.
Защищенные типы можно использовать в подклассах и вложенных типах в сценариях дополнительной настройки.
Устранение нарушений
Если вложенный тип не должен быть видимым извне, следует изменить его доступность. В противном случае нужно удалить вложенный тип из его родителя. Если целью вложенности является категоризация вложенного типа, используйте пространство имен для построения иерархии.
Когда лучше отключить предупреждения
Для этого правила отключать вывод предупреждений не следует.
Пример
В следующем примере показан тип, нарушающий это правило.
public class ParentType
{
public class NestedType
{
public NestedType()
{
}
}
public ParentType()
{
NestedType nt = new NestedType();
}
}
Imports System
Namespace ca1034
Class ParentType
Public Class NestedType
Sub New()
End Sub
End Class
Sub New()
End Sub
End Class
End Namespace