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.