CA2263: Preferuj przeciążenie ogólne, gdy typ jest znany

Wartość
Identyfikator reguły CA2263
Tytuł Preferuj przeciążenie ogólne, gdy typ jest znany
Kategoria Użycie
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślnie włączone na platformie .NET 9 Jako sugestia

Przyczyna

Przeciążenie metody, które akceptuje argument, jest wywoływane System.Type , gdy typ jest znany w czasie kompilacji, a odpowiednie przeciążenie ogólne jest dostępne.

Opis reguły

Przeciążenia ogólne są preferowane do przeciążeń, które akceptują argument typu System.Type , gdy typ jest znany w czasie kompilacji (przy użyciu operatora typeof w języku C# lub operatora GetType w Visual Basic). Przeciążenia ogólne promują czystszy i bardziej bezpieczny kod typu dzięki ulepszonym sprawdzaniom czasu kompilacji.

Jak naprawić naruszenia

Aby naprawić naruszenie tej reguły, użyj odpowiedniego przeciążenia ogólnego.

Przykład

Poniższy fragment kodu przedstawia naruszenie ca2263:

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

Poniższy fragment kodu naprawia naruszenie:

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

Kiedy pomijać ostrzeżenia

Można bezpiecznie pominąć ostrzeżenie z tej reguły; jednak zaleca się użycie przeciążenia ogólnego, jeśli jest to możliwe.

Pomijanie ostrzeżenia

Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

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

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.