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