Share via


CA2263: Föredrar allmän överlagring när typen är känd

Värde
Regel-ID CA2263
Title Föredrar allmän överlagring när typen är känd
Kategori Användning
Korrigeringen är icke-bakåtkompatibel Icke-icke-bryta
Aktiverad som standard i .NET 9 Som förslag

Orsak

En metodöverlagring som accepterar ett System.Type argument anropas när typen är känd vid kompileringstillfället och en lämplig allmän överlagring är tillgänglig.

Regelbeskrivning

Allmänna överlagringar är att föredra framför överlagringar som accepterar ett argument av typen System.Type när typen är känd vid kompileringstid (med typ av operator i C# eller GetType-operatorn i Visual Basic). Allmänna överlagringar främjar renare och mer typsäker kod med förbättrade kompileringstidskontroller.

Så här åtgärdar du överträdelser

Om du vill åtgärda ett brott mot den här regeln använder du lämplig allmän överlagring.

Exempel

Följande kodfragment visar ett brott mot CA2263:

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

Följande kodfragment åtgärdar överträdelsen:

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

När du ska ignorera varningar

Det är säkert att ignorera en varning från den här regeln. Vi rekommenderar dock att du använder en allmän överlagring om möjligt.

Ignorera en varning

Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.

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

Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.

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

Mer information finns i Så här utelämnar du kodanalysvarningar.