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