S4060 — Non-abstract attributes should be sealed

Language
VB.NET
Type
Code smell
Severity
Minor
Tags
performance

Why is this an issue?

The .NET framework class library provides methods for retrieving custom attributes. Sealing the attribute eliminates the search through the inheritance hierarchy, and can improve performance.

This rule raises an issue when a public type inherits from System.Attribute, is not abstract, and is not sealed.

Noncompliant code example


Public Class MyAttribute    ' Noncompliant
    Inherits Attribute

    Public ReadOnly Property Name As String

    Public Sub New(Name As String)
        Me.Name = Name
    End Sub

End Class

Compliant solution


Public NotInheritable Class MyAttribute
    Inherits Attribute

    Public ReadOnly Property Name As String

    Public Sub New(Name As String)
        Me.Name = Name
    End Sub

End Class

↑ Back to top