CA1813: A nem hozzárendelt attribútumok elkerülése
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA1813 |
Cím | A nem hozzárendelt attribútumok elkerülése |
Kategória | Teljesítmény |
A javítás kompatibilitástörő vagy nem törik | Törés |
Alapértelmezés szerint engedélyezve a .NET 8-ban | Nem |
Ok
A nyilvános típus öröklődik, System.Attributenem absztrakt, és nincs lezárva (NotInheritable
a Visual Basicben).
Szabály leírása
A .NET metódusokat biztosít az egyéni attribútumok lekéréséhez. Ezek a metódusok alapértelmezés szerint az attribútumöröklési hierarchiában keresnek. Megkeresi például a megadott attribútumtípust, System.Attribute.GetCustomAttribute vagy bármely olyan attribútumtípust, amely kibővíti a megadott attribútumtípust. Az attribútum zárolása megszünteti a keresést az öröklési hierarchián keresztül, és javíthatja a teljesítményt.
Szabálysértések kijavítása
A szabály megsértésének kijavításához zárja le az attribútumtípust, vagy tegye absztraktvá.
Mikor kell letiltani a figyelmeztetéseket?
A szabály figyelmeztetésének mellőzése biztonságos. Csak akkor tiltsa le, ha attribútumhierarchiát definiál, és nem tudja lezárni vagy absztrakcióvá tenni az attribútumot.
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 CA1813
// The code that's violating the rule is on this line.
#pragma warning restore CA1813
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.CA1813.severity = none
További információ: Kódelemzési figyelmeztetések letiltása.
Példa
Az alábbi példa egy olyan egyéni attribútumot mutat be, amely megfelel ennek a szabálynak.
// Satisfies rule: AvoidUnsealedAttributes.
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)]
public sealed class DeveloperAttribute : Attribute
{
private string nameValue;
public DeveloperAttribute(string name)
{
nameValue = name;
}
public string Name
{
get
{
return nameValue;
}
}
}
Imports System
Namespace ca1813
' Satisfies rule: AvoidUnsealedAttributes.
<AttributeUsage(AttributeTargets.Class Or AttributeTargets.Struct)>
Public NotInheritable Class DeveloperAttribute
Inherits Attribute
Public Sub New(name As String)
Me.Name = name
End Sub
Public ReadOnly Property Name() As String
End Class
End Namespace
Kapcsolódó szabályok
- CA1019: Attribútumargumentumok kiegészítőinek definiálása
- CA1018: Attribútumok megjelölése az AttributeUsageAttribute használatával
Kapcsolódó információk
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: