CA1813: Vyhnout neuzavřených atributy
Název_typu |
AvoidUnsealedAttributes |
CheckId |
CA1813 |
Kategorie |
Microsoft.Performance |
Změnit rozdělení |
Rozdělení |
Příčina
Veřejné typu dědí z System.Attribute, není abstraktní a nejsou uzavřeny (NotInheritable v jazyce Visual Basic).
Popis pravidla
.NET Framework Knihovna tříd poskytuje metody pro načítání vlastních atributů.Ve výchozím nastavení tyto metody hledání hierarchii dědičnosti atribut; například Attribute.GetCustomAttribute vyhledá typ zadaný atribut nebo libovolný atribut typu, který rozšiřuje typ zadaný atribut.Uzavírání atribut eliminuje hledání prostřednictvím hierarchii dědičnosti a zlepšit výkon.
Jak opravit porušení
Porušení tohoto pravidla opravíte zapečetit typ atributu nebo vytvořit abstraktní.
Při potlačení upozornění
Je bezpečné potlačí upozornění od tohoto pravidla.Je vhodné provést pouze v případě, že definovat hierarchii atributů a nelze zakódovat atribut nebo provést abstraktní.
Příklad
Následující příklad ukazuje vlastní atribut, který splňuje tato pravidla.
Imports System
Namespace PerformanceLibrary
' Satisfies rule: AvoidUnsealedAttributes.
<AttributeUsage(AttributeTargets.Class Or AttributeTargets.Struct)> _
NotInheritable Public Class DeveloperAttribute
Inherits Attribute
Private nameValue As String
Public Sub New(name As String)
nameValue = name
End Sub
Public ReadOnly Property Name() As String
Get
Return nameValue
End Get
End Property
End Class
End Namespace
using System;
namespace PerformanceLibrary
{
// 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;
}
}
}
}
Souvisejících pravidel
CA1019: Definování přístupové objekty pro argumenty atributu
CA1018: Atributy značky s AttributeUsageAttribute