CA1513: Použijte pomocnou metodu pro vyvolání výjimky ObjectDisposedException

Vlastnost Hodnota
ID pravidla CA1513
Název Použijte pomocnou funkci pro vyvolání výjimky ObjectDisposedException
Kategorie Udržovatelnost
Oprava, která může být destruktivní nebo nedestruktivní Nepřerušované
Povoleno ve výchozím nastavení v .NET 10 Jako návrh
Příslušné jazyky C# a Visual Basic

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é zneužití instrukční cache. Pomocné metody, jako ThrowIf, jsou jednodušší a efektivnější než bloky if, 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. Ve Visual Studio použijte nabídku se žárovkou k automatické opravě kódu.

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.