This documentation is archived and is not being maintained.

Static holder types should be sealed







Breaking Change


A public or protected type contains only static members and is not declared with the sealed (C# Reference) (NotInheritable) modifier.

This rule assumes that a type that contains only static members is not designed to be inherited, because the type does not provide any functionality that can be overridden in a derived type. A type that is not meant to be inherited should be marked with the sealed modifier to prohibit its use as a base type.

To fix a violation of this rule, mark the type as sealed.

Exclude a warning from this rule only if the type is designed to be inherited. The absence of the sealed modifier suggests that the type is useful as a base type.

The following example shows a type that violates the rule.

using namespace System;

namespace DesignLibrary
    public ref class StaticMembers
        static int someField;

        StaticMembers() {}

        static property int SomeProperty
            int get()
                return someField;

            void set(int value)
                someField = value;

        static void SomeMethod() {}