Sdílet prostřednictvím


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

Viz také

Referenční dokumentace

Attribute Usage Guidelines