Gendarme.Rules.Performance.AvoidUnsealedConcreteAttributesRule Class
This rule fires if an attribute is defined which is both concrete (i.e. not abstract) and unsealed. This is a performance problem because it means that System.Attribute.GetCustomAttribute has to search the attribute type hierarchy for derived types. To fix this either seal the type or make it abstract.

See Also: AvoidUnsealedConcreteAttributesRule Members

Syntax

[Gendarme.Framework.FxCopCompatibility("Microsoft.Performance", "CA1813:AvoidUnsealedAttributes")]
[Gendarme.Framework.Problem("Because of performance issues, concrete attributes should be sealed.")]
[Gendarme.Framework.Solution("Unless you plan to inherit from this attribute you should consider sealing it.")]
public class AvoidUnsealedConcreteAttributesRule : Gendarme.Framework.Rule, Gendarme.Framework.ITypeRule

Remarks

Before Gendarme 2.0 this rule was named AvoidUnsealedAttributesRule.

Example

Bad example:

Example

            [AttributeUsage (AttributeTargets.All)]
            public class BadAttribute : Attribute {
            }
            

Example

Good example (sealed):

Example

            [AttributeUsage (AttributeTargets.All)]
            public sealed class SealedAttribute : Attribute {
            }
            

Example

Good example (abstract and sealed):

Example

            [AttributeUsage (AttributeTargets.All)]
            public abstract class AbstractAttribute : Attribute {
            }
            [AttributeUsage (AttributeTargets.All)]
            public sealed class ConcreteAttribute : AbstractAttribute {
            }
            

Requirements

Namespace: Gendarme.Rules.Performance
Assembly: Gendarme.Rules.Performance (in Gendarme.Rules.Performance.dll)
Assembly Versions: 2.8.0.0