Partilhar via


Evite atributos sem lacre

TypeName

AvoidUnsealedAttributes

CheckId

CA1813

Category (Categoria)

Microsoft.desempenho

Quebrando alterar

Quebrando

Causa

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

Descrição da regra

The .NET Framework biblioteca de classes fornece métodos para recuperar os atributos personalizados. Por padrão, esses métodos procurar o atributo de hierarquia de herança, por exemplo Attribute.GetCustomAttribute procura o tipo de atributo especificado ou qualquer tipo de atributo que estende o tipo de atributo especificado. Lacrar o atributo elimina a Pesquisar a hierarquia de herança e pode melhorar o desempenho.

Como corrigir violações

Para corrigir uma violação dessa regra, lacrar o tipo de atributo ou tornar abstrato.

Quando suprimir avisos

É seguro eliminar um aviso da regra.Você deve fazer isso somente se você estiver definindo uma hierarquia de atributo e não pode lacrar o atributo ou tornar abstrato.

Exemplo

O exemplo a seguir mostra um atributo personalizado que atenda a essa 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

Definir acessadores para argumentos de atributo

Atributos de marca com AttributeUsageAttribute

Consulte também

Referência

Diretrizes de uso do atributo