Бөлісу құралы:


CA1515: рекомендуется сделать общедоступные типы внутренними

Свойство Значение
Идентификатор правила CA1515
Заголовок Рассмотрите возможность создания внутренних типов общедоступных типов
Категория Ремонтопригодность
Исправление является критическим или не критическим Не критическое
Включен по умолчанию в .NET 10 нет
Применимые языки C# и Visual Basic

Причина

Тип внутри исполняемой сборки объявляется как общедоступный.

Описание правила

В отличие от библиотеки классов, API приложения обычно не ссылается публично, поэтому типы можно пометить internal.

Внутренние типы, в свою очередь, могут воспользоваться различными анализаторами кода, предназначенными для не общедоступных API.

Устранение нарушений

Пометьте тип как internal.

Пример

В следующем фрагменте кода показано нарушение CA1515:

// Inside a project with <OutputKind>Exe</OutputKind>.
public class Program
{
    public static void Main(string[] args)
    {
    }
}
' Inside a project with <OutputKind>Exe</OutputKind>.
Public Class Program
    Public Shared Sub Main(args As string())
    End Sub
End Class

Следующий фрагмент кода исправляет нарушение.

// Inside a project with <OutputKind>Exe</OutputKind>.
internal class Program
{
    public static void Main(string[] args)
    {
    }
}
' Inside a project with <OutputKind>Exe</OutputKind>.
Friend Class Program
    Public Shared Sub Main(args As string())
    End Sub
End Class

(Дополнительные сведения о типе выходных данных проекта см. в разделе "Тип вывода" конструктора проектов .NET.)

Когда лучше отключить предупреждения

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

Отключение предупреждений

Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.

#pragma warning disable CA1515
// The code that's violating the rule is on this line.
#pragma warning restore CA1515

Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.

[*.{cs,vb}]
dotnet_diagnostic.CA1515.severity = none

Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.

Настройка кода для анализа

Вы можете настроить, к каким типам выходных сборок следует применить это правило. Например, чтобы применить это правило только к коду, который создает консольное приложение или динамически связанную библиотеку (то есть не приложение пользовательского интерфейса), добавьте следующую пару "ключ-значение" в файл .editorconfig в проекте:

dotnet_code_quality.CA1515.output_kind = ConsoleApplication, DynamicallyLinkedLibrary

Дополнительные сведения см. в output_kind.