Compartilhar via


CA1813: evitar atributos não lacrados

TypeName

AvoidUnsealedAttributes

CheckId

CA1813

Categoria

Microsoft.Performance

Alteração Significativa

Quebra

Causa

Um tipo público herda de Attribute, não é abstrato, e não é selado (NotInheritable no Visual Basic).

Descrição da Regra

A biblioteca de classes de .NET Framework fornece métodos para recuperar atributos personalizados.Por padrão, esses métodos da hierarquia de herança de atributos; por exemplo Attribute.GetCustomAttribute pesquisas de para o tipo de atributo especificado, ou qualquer tipo de atributo que estende o tipo de atributo especificado.Selar o atributo elimina a pesquisa pela hierarquia de herança, e pode melhorar o desempenho.

Como Corrigir Violações

Para corrigir uma violação desta regra, selar o tipo de atributo ou deixá-lo abstrair.

Quando Suprimir Alertas

É seguro suprimir um aviso desta regra.Faça isso apenas se você estiver definindo uma hierarquia de atributo e não pode selar o atributo ou deixá-lo abstrair.

Exemplo

O exemplo a seguir mostra um atributo personalizado que satisfaça esta regra.

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;
            }
        }
    }

}

Regras Relacionadas

CA1019: definir acessadores para argumentos de atributo

CA1018: marcar atributos com AttributeUsageAttribute

Consulte também

Outros recursos

Attribute Usage Guidelines