CA1711: идентификаторы не должны иметь неверных суффиксов

Свойство Значение
Идентификатор правила CA1711
Заголовок Идентификаторы не должны иметь неправильные суффиксы
Категория Именование
Исправление является критическим или не критическим Критическое
Включен по умолчанию в .NET 8 No

Причина

Идентификатор имеет неправильный суффикс.

По умолчанию это правило проверяет только видимые извне идентификаторы, но это поведение можно настроить.

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

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

В следующей таблице перечислены зарезервированные суффиксы и базовые типы и интерфейсы, с которыми они связаны.

Суффикс Базовый тип или интерфейс
Атрибут System.Attribute
Сбор System.Collections.ICollection

System.Collections.IEnumerable

System.Collections.Queue

System.Collections.Stack

System.Collections.Generic.ICollection<T>

System.Data.DataSet

System.Data.DataTable
Dictionary System.Collections.IDictionary

System.Collections.Generic.IDictionary<TKey,TValue>
Eventargs System.EventArgs
EventHandler Делегат обработчика событий
Исключение System.Exception
Разрешение System.Security.IPermission
Очередь System.Collections.Queue
Стек System.Collections.Stack
Stream System.IO.Stream

Кроме того, не следует использовать следующие суффиксы:

  • Delegate
  • Enum
  • Impl (вместо нее следует использовать Core)
  • Ex или аналогичный суффикс, чтобы отличить его от более ранней версии того же типа
  • Flag или Flags для типов перечисления

Соглашения об именовании обеспечивают единство вида библиотек, предназначенных для среды CLR. Это сокращает время, необходимое для изучения новых библиотек программного обеспечения, и позволяет клиентам увериться в том, что разработчик библиотеки имеет опыт разработки управляемого кода. Дополнительные сведения см. в разделе Рекомендации по именованию: классы, структуры и интерфейсы.

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

Удалите суффикс из имени типа.

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

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

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

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

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

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

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

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

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

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

Эти параметры можно настроить только для этого правила, для всех правил, к которым она применяется, или для всех правил в этой категории (именование), к которым она применяется. Дополнительные сведения см. в статье Параметры конфигурации правила качества кода.

Включение определенных контактных зон API

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

dotnet_code_quality.CAXXXX.api_surface = private, internal

Разрешите суффиксы

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

dotnet_code_quality.ca1711.allowed_suffixes = Flag|Flags

См. также