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
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.