CA1018: Attribútumok megjelölése az AttributeUsageAttribute használatával
Tulajdonság | Érték |
---|---|
Szabályazonosító | CA1018 |
Cím | Attribútumok megjelölése az AttributeUsageAttribute használatával |
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
Az System.AttributeUsageAttribute attribútum nem szerepel az egyéni attribútumban.
Szabály leírása
Ha egyéni attribútumot határoz meg, jelölje meg a forráskódban az egyéni attribútum alkalmazhatósági helyére való hivatkozással AttributeUsageAttribute . Az attribútum jelentése és rendeltetése határozza meg az attribútum érvényes helyét a kódban. Meghatározhat például egy attribútumot, amely azonosítja azt a személyt, aki felelős az egyes típusok karbantartásáért és fejlesztéséért egy tárban, és hogy a felelősség mindig a típus szintjén van hozzárendelve. Ebben az esetben a fordítóknak engedélyezniük kell az attribútumot az osztályokon, enumerálásokon és felületeken, de nem engedélyezhetik metódusokon, eseményeken vagy tulajdonságokon. A szervezeti szabályzatok és eljárások határozzák meg, hogy az attribútum engedélyezve legyen-e a szerelvényeken.
Az System.AttributeTargets enumerálás határozza meg az egyéni attribútumokhoz megadható célokat. Ha kihagyjaAttributeUsageAttribute, az egyéni attribútum az enumerálás értéke AttributeTargets által All
meghatározott összes célra érvényes lesz.
Szabálysértések kijavítása
A szabály megsértésének kijavításához adja meg az attribútum céljait a használatával AttributeUsageAttribute. Tekintse meg a következő példát.
Mikor kell letiltani a figyelmeztetéseket?
Az üzenet kizárása helyett ki kell javítania a szabály megsértését. Még ha az attribútum öröklődik AttributeUsageAttributeis, az attribútumnak jelen kell lennie a kódkarbantartás egyszerűsítése érdekében.
Példa
Az alábbi példa két attribútumot határoz meg. BadCodeMaintainerAttribute
helytelenül kihagyja az AttributeUsageAttribute utasítást, és GoodCodeMaintainerAttribute
helyesen implementálja az ebben a szakaszban korábban ismertetett attribútumot. (A tulajdonságot DeveloperName
a CA1019 tervezési szabály megköveteli: Attribútumargumentumok kiegészítőinek definiálása, és a teljesség érdekében szerepel benne.)
using System;
namespace ca1018
{
// Violates rule: MarkAttributesWithAttributeUsage.
public sealed class BadCodeMaintainerAttribute : Attribute
{
public BadCodeMaintainerAttribute(string developerName)
{
DeveloperName = developerName;
}
public string DeveloperName { get; }
}
// Satisfies rule: Attributes specify AttributeUsage.
// This attribute is valid for type-level targets.
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Enum | AttributeTargets.Interface | AttributeTargets.Delegate)]
public sealed class GoodCodeMaintainerAttribute : Attribute
{
public GoodCodeMaintainerAttribute(string developerName)
{
DeveloperName = developerName;
}
public string DeveloperName { get; }
}
}
Imports System
Namespace ca1018
' Violates rule: MarkAttributesWithAttributeUsage.
Public NotInheritable Class BadCodeMaintainerAttribute
Inherits Attribute
Public Sub New(developerName As String)
Me.DeveloperName = developerName
End Sub 'New
Public ReadOnly Property DeveloperName() As String
End Class
' Satisfies rule: Attributes specify AttributeUsage.
' The attribute is valid for type-level targets.
<AttributeUsage(AttributeTargets.Class Or AttributeTargets.Enum Or
AttributeTargets.Interface Or AttributeTargets.Delegate)>
Public NotInheritable Class GoodCodeMaintainerAttribute
Inherits Attribute
Public Sub New(developerName As String)
Me.DeveloperName = developerName
End Sub 'New
Public ReadOnly Property DeveloperName() As String
End Class
End Namespace
Kapcsolódó szabályok
- CA1019: Attribútumargumentumok kiegészítőinek definiálása
- CA1813: A nem hozzárendelt attribútumok elkerülése
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: