Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All

CA1813: Avoid unsealed attributes







Breaking Change


A public type inherits from System.Attribute, is not abstract, and is not sealed (NotInheritable in Visual Basic).

The .NET Framework class library provides methods for retrieving custom attributes. By default, these methods search the attribute inheritance hierarchy; for example Attribute.GetCustomAttribute searches for the specified attribute type, or any attribute type that extends the specified attribute type. Sealing the attribute eliminates the search through the inheritance hierarchy, and can improve performance.

To fix a violation of this rule, seal the attribute type or make it abstract.

It is safe to suppress a warning from this rule. You should do this only if you are defining an attribute hierarchy and cannot seal the attribute or make it abstract.

The following example shows a custom attribute that satisfies this rule.

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 
            Return nameValue
        End Get 
    End Property 
End Class  

End Namespace
© 2015 Microsoft