CA1513: Použití pomocné rutiny ObjectDisposedException
Vlastnost | Hodnota |
---|---|
ID pravidla | CA1513 |
Název | Použití pomocné rutiny vyvolání objektu ObjectDisposedException |
Kategorie | Udržovatelnost |
Oprava způsobující chybu nebo chybu způsobující chybu | Nepřerušované |
Povoleno ve výchozím nastavení v .NET 8 | Jako návrh |
Příčina
Kód zkontroluje, zda je objekt uvolněn a podmíněně vyvolá .ObjectDisposedException
Popis pravidla
Kontroly objektů mají významný vliv na velikost kódu a často dominují kódu pro malé funkce a setter vlastností. Tyto kontroly brání inliningu a způsobují značné znečištění mezipaměti instrukcemi. Pomocné metody, jako ThrowIf jsou jednodušší a efektivnější než if
bloky, které vytváří novou instanci výjimky.
Příklad
Následující fragment kódu ukazuje porušení ca1513:
class C
{
private bool _disposed = false;
void M()
{
if (_disposed)
throw new ObjectDisposedException(GetType().Name);
}
}
Následující fragment kódu ukazuje opravu:
class C
{
private bool _disposed = false;
void M()
{
ObjectDisposedException.ThrowIf(_disposed, this);
}
}
Jak opravit porušení
if
Nahraďte blok, který vyvolá výjimku voláním ThrowIf. Nebo v sadě Visual Studio pomocí nabídky žárovky opravte kód automaticky.
Kdy potlačit upozornění
Pokud vás nezajímá udržovatelnost kódu, je bezpečné potlačit porušení tohoto pravidla. Je také v pořádku potlačit porušení, která jsou identifikována jako falešně pozitivní.
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 CA1513
// The code that's violating the rule is on this line.
#pragma warning restore CA1513
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.CA1513.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.