CA1813: Korumasız özniteliklerden kaçının
TypeName |
AvoidUnsealedAttributes |
CheckId |
CA1813 |
Kategori |
Microsoft.Performance |
Değişiklik kesiliyor |
Bölme |
Neden
Ortak türü devraldığı Attribute, soyut değil ve değil Mühürlü (NotInheritable Visual Basic).
Kural Tanımı
.NET Framework Sýnýf kitaplýðý özel öznitelikleri almak için yöntemler sağlar.Varsayılan olarak, bu yöntemleri öznitelik Devralma hiyerarşisinde arama; Örneğin Attribute.GetCustomAttribute belirtilen öznitelik türü veya belirtilen öznitelik türü genişleten herhangi bir öznitelik türü arar.Öznitelik mühürleme kalıtım hiyerarşisi aracılığıyla arama ortadan kaldırır ve performansı artırır.
İhlalleri düzeltmek nasıl
Bu kuralı ihlal düzeltmek için öznitelik türü mühürlemek veya soyut yapabilirsiniz.
Uyarıları ne zaman
Uyarı Bu kuraldan bastırmak güvenlidir.Yalnızca, bir öznitelik Hiyerarşinin tanımlanması ve öznitelik mühürlemek veya soyut olun, bunu yapmanız gerekir.
Örnek
Aşağıdaki örnekte, bu kurala uyan özel bir nitelik gösterir.
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;
}
}
}
}
İlgili kuralları
CA1019: Öznitelik bağımsız değişkenleri için erişimcileri tanımlayın
CA1018: Öznitelikleri AttributeUsageAttribute ile işaretleyin