Megosztás a következőn keresztül:


CA1070: Ne deklarálja az eseménymezőket virtuálisként

Tulajdonság Érték
Szabályazonosító CA1070
Cím Ne deklarálja az eseménymezőket virtuálisként
Kategória Design
A javítás kompatibilitástörő vagy nem törik Törés
Alapértelmezés szerint engedélyezve a .NET 8-ban Javaslatként

Ok

Egy mezőszerű esemény virtuálisként lett deklarálva.

Ez a szabály alapértelmezés szerint csak külsőleg látható típusokat tekint meg, de ez konfigurálható.

Szabály leírása

Kövesse ezeket a .NET tervezési irányelveket az alaposztály-események származtatott osztályokban való létrehozásához. Ne deklaráljon virtuális eseményeket alaposztályban. A származtatott osztály felülírt eseményei nem definiált viselkedéssel rendelkeznek. A C#-fordító nem kezeli megfelelően ezt, és kiszámíthatatlan, hogy a származtatott esemény előfizetője ténylegesen feliratkozik-e az alaposztályeseményre.

using System;
public class C
{
    // CA1070: Event 'ThresholdReached' should not be declared virtual.
    public virtual event EventHandler ThresholdReached;
}

Szabálysértések kijavítása

Kövesse ezeket a .NET tervezési irányelveket , és kerülje a virtuális mezőszerű eseményeket.

Mikor kell letiltani a figyelmeztetéseket?

Ha az esemény egy külsőleg látható nyilvános API, amely már része egy kiszállított kódtárnak, akkor nyugodtan letilthatja a szabály figyelmeztetését, hogy elkerülje a kódtár felhasználóinak kompatibilitástörő változását.

Figyelmeztetés mellőzése

Ha csak egyetlen szabálysértést szeretne letiltani, adjon hozzá előfeldolgozási irányelveket a forrásfájlhoz a szabály letiltásához és újbóli engedélyezéséhez.

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

Ha le szeretné tiltani egy fájl, mappa vagy projekt szabályát, állítsa annak súlyosságát none a konfigurációs fájlban.

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

További információ: Kódelemzési figyelmeztetések letiltása.

Kód konfigurálása elemzéshez

A következő beállítással konfigurálhatja, hogy a kódbázis mely részein futtassa ezt a szabályt.

Ezt a beállítást konfigurálhatja csak ehhez a szabályhoz, az összes szabályhoz, vagy az ebben a kategóriában (Tervezés) szereplő összes szabályhoz, amelyekre vonatkozik. További információ: Kódminőségi szabály konfigurációs beállításai.

Adott API-felületek belefoglalása

A kódbázis azon részeit konfigurálhatja, amelyeken futtathatja ezt a szabályt az akadálymentességük alapján. Ha például meg szeretné adni, hogy a szabály csak a nem nyilvános API-felületen fusson, adja hozzá a következő kulcs-érték párot a projekt egyik .editorconfig fájljához:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Kapcsolódó információk