다음을 통해 공유


CA1052: 정적 소유자 형식은 sealed여야 합니다.

TypeName

StaticHolderTypesShouldBeSealed

CheckId

CA1052

범주

Microsoft.Design

변경 수준

주요 변경

원인

public 또는 protected 형식이 정적 멤버만 포함하며 sealed(C# 참조)(NotInheritable(Visual Basic)) 한정자로 선언되지 않았습니다.

규칙 설명

이 규칙에서는 정적 멤버만 포함하는 형식은 파생된 형식에서 재정의할 수 있는 기능을 제공하지 않기 때문에 상속될 수 없다고 가정합니다. 상속을 고려하지 않은 형식은 sealed 한정자로 표시하여 기본 형식으로 사용되도록 해야 합니다.

위반 문제를 해결하는 방법

이 규칙 위반 문제를 해결하려면 형식을 sealed로 표시합니다. .NET Framework 2.0 이하를 대상으로 하는 경우에는 형식을 static으로 표시하는 방법이 더 좋습니다. 이 방법을 사용하면 클래스가 만들어지지 않도록 하기 위해 private 생성자를 선언하지 않아도 됩니다.

경고를 표시하지 않는 경우

형식을 상속 가능하도록 디자인한 경우에는 이 규칙에서 경고를 표시하지 않도록 설정합니다. sealed 한정자가 없다는 것은 해당 형식을 기본 형식으로 사용할 수 있다는 의미합니다.

규칙 위반 예

설명

다음 예제에서는 규칙을 위반하는 형식을 보여 줍니다.

코드

Imports System

Namespace DesignLibrary

    Public Class StaticMembers

        Private Shared someField As Integer 

        Shared Property SomeProperty As Integer
            Get
                Return someField
            End Get
            Set
                someField = Value
            End Set
        End Property

        Private Sub New()
        End Sub

        Shared Sub SomeMethod()
        End Sub

    End Class

End Namespace
using System;

namespace DesignLibrary
{
    public class StaticMembers
    {
        static int someField;

        public static int SomeProperty
        {
            get
            {
                return someField;
            }
            set
            {
                someField = value;
            }
        }

        StaticMembers() {}

        public static void SomeMethod() {}
    }
}
using namespace System;

namespace DesignLibrary
{
    public ref class StaticMembers
    {
        static int someField;

        StaticMembers() {}

    public:
        static property int SomeProperty
        {
            int get()
            {
                return someField;
            }

            void set(int value)
            {
                someField = value;
            }
        }

        static void SomeMethod() {}
    };
}

static 한정자를 사용한 해결 방법

설명

다음 예제에서는 형식을 static 한정자로 표시하여 이 규칙 위반 문제를 해결하는 방법을 보여 줍니다.

코드

using System; 

namespace DesignLibrary
{    
    public static class StaticMembers    
    {        
        private static int someField;     

        public static int SomeProperty        
        {            
            get { return someField; }            
            set { someField = value; }        
        }                

        public static void SomeMethod()         
        {        
        }         

        public static event SomeDelegate SomeEvent;    
    }     

    public delegate void SomeDelegate();
}

관련 규칙

CA1053: 정적 소유자 형식에는 생성자를 사용하면 안 됩니다.