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

TypeName

StaticHolderTypesShouldBeSealed

CheckId

CA1052

범주

Microsoft.Design

변경 수준

주요 변경

원인

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

규칙 설명

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

위반 문제를 해결하는 방법

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

경고를 표시하지 않는 경우

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

규칙 위반 예

ms182168.collapse_all(ko-kr,VS.110).gif설명

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

ms182168.collapse_all(ko-kr,VS.110).gif코드

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 한정자를 사용한 해결 방법

ms182168.collapse_all(ko-kr,VS.110).gif설명

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

ms182168.collapse_all(ko-kr,VS.110).gif코드

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: 정적 소유자 형식에는 생성자를 사용하면 안 됩니다.