CA2015: Nedefinujte finalizační metody pro typy odvozené z memoryManager<T>
Vlastnost | Hodnota |
---|---|
ID pravidla | CA2015 |
Název | Nedefinujte finalizační metody pro typy odvozené z MemoryManager<T.> |
Kategorie | Spolehlivost |
Oprava způsobující chybu nebo chybu způsobující chybu | Nenarušující |
Povoleno ve výchozím nastavení v .NET 9 | Jako upozornění |
Příčina
Definování finalizátorů pro typy odvozené od MemoryManager<T>
Popis pravidla
Přidání finalizátoru do typu odvozeného z MemoryManager<T> je pravděpodobně indikací chyby, protože naznačuje nativní prostředek, který by mohl být předán v Span<T> vyčištění a potenciálně i když je stále používán .Span<T>
Poznámka:
Třída MemoryManager<T> je určená pro pokročilé scénáře. Většina vývojářů ho nemusí používat.
Jak opravit porušení
Chcete-li opravit porušení, odeberte definici finalizátoru.
class DerivedClass <T> : MemoryManager<T>
{
public override bool Dispose(bool disposing)
{
if (disposing)
{
_handle.Dispose();
}
}
...
// Violation occurs, remove the finalizer to fix the warning.
~DerivedClass() => Dispose(false);
}
Kdy potlačit upozornění
Je bezpečné potlačit porušení tohoto pravidla, pokud je záměrem vytvořit finalizační metodu pro účely ladění nebo ověřování.
Potlačení upozornění
Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.
#pragma warning disable CA2015
// The code that's violating the rule is on this line.
#pragma warning restore CA2015
Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none
konfiguračním souboru.
[*.{cs,vb}]
dotnet_diagnostic.CA2015.severity = none
Chcete-li tuto celou kategorii pravidel zakázat, nastavte závažnost kategorie na none
hodnotu v konfiguračním souboru.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Reliability.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.