CA1000. Не объявляйте статические члены в универсальных типах

Значение
Идентификатор правила CA1000
Категория Оформление
Исправление является критическим или не критическим Критическое

Причина

Универсальный тип содержит элемент static (Shared в Visual Basic).

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

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

При вызове элемента static универсального типа нужно указать аргумент этого типа. При вызове универсального экземпляра элемента, не поддерживающего вывод типа, для элемента нужно указать аргумент типа. Синтаксис для указания аргумента типа в этих двух случаях отличается, и их легко спутать, как показано в следующих вызовах:

' Shared method in a generic type.
GenericType(Of Integer).SharedMethod()

' Generic instance method that does not support inference.
someObject.GenericMethod(Of Integer)()
// Static method in a generic type.
GenericType<int>.StaticMethod();

// Generic instance method that does not support inference.
someObject.GenericMethod<int>();

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

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

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

Условия для отключения предупреждений

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

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

Существует несколько способов скрыть предупреждения анализа кода, в том числе отключение правила для проекта, использование директивы препроцессора, чтобы отключить его для конкретной строки кода, или применение атрибута SuppressMessageAttribute. Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.

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

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

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

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

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

dotnet_code_quality.CAXXXX.api_surface = private, internal

См. также раздел