Поделиться через


CA2263: предпочитать универсальную перегрузку, если тип известен

Значение
Идентификатор правила CA2263
Заголовок Предпочитать универсальную перегрузку, если тип известен
Категория Использование
Исправление является критическим или не критическим Не критическое
Включен по умолчанию в .NET 9 Как предложение

Причина

Перегрузка метода, принимаюющая System.Type аргумент, вызывается, когда тип известен во время компиляции и доступен подходящий универсальный перегрузка.

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

Универсальные перегрузки предпочтительнее перегрузки, которые принимают аргумент типа System.Type , когда тип известен во время компиляции (используя оператор typeof в C# или оператор GetType в Visual Basic). Универсальные перегрузки повышают более чистый и более типобезопасный код с улучшенными проверка времени компиляции.

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

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

Пример

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

int size = Marshal.SizeOf(typeof(bool));
Dim size As Integer = Marshal.SizeOf(GetType(Boolean))

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

int size = Marshal.SizeOf<bool>();
Dim size As Integer = Marshal.SizeOf(Of Boolean)()

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

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

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

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

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

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

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

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