다음을 통해 공유


CA1012: 추상 형식에는 생성자를 사용하면 안 됩니다.

TypeName

AbstractTypesShouldNotHaveConstructors

CheckId

CA1012

범주

Microsoft.Design

변경 수준

주요 변경 아님

원인

public 형식이 추상이며 public 생성자를 가지고 있습니다.

규칙 설명

추상 형식에 대한 생성자는 파생된 형식에서만 호출할 수 있습니다.public 생성자에서 형식의 인스턴스를 만들고 사용자는 추상 형식의 인스턴스를 만들 수 없기 때문에 public 생성자가 있는 추상 형식은 잘못 디자인된 것입니다.

위반 문제를 해결하는 방법

이 규칙 위반 문제를 해결하려면 생성자를 protected로 지정하거나 형식을 추상으로 선언하지 않도록 합니다.

경고를 표시하지 않는 경우

이 규칙에서는 경고를 표시해야 합니다.추상 형식에 public 생성자가 있습니다.

예제

다음 예제에는 이 규칙을 위반하는 추상 형식이 있습니다.

Imports System     

Namespace Samples

    ' Violates this rule      
    Public MustInherit Class Book 

        Public Sub New()          
        End Sub 

    End Class 

End Namespace 
using System;

namespace Samples  
{   
    // Violates this rule      
    public abstract class Book      
    {          
        public Book()          
        {          
        }      
    } 
}

다음 예제에서는 public에서 protected로 생성자의 액세스 가능성을 변경하여 앞의 규칙 위반 문제를 해결합니다.

Imports System     

Namespace Samples

    ' Violates this rule      
    Public MustInherit Class Book 

        Protected Sub New()          
        End Sub 

    End Class 

End Namespace 
using System;

namespace Samples  
{   
    // Violates this rule      
    public abstract class Book      
    {          
        protected Book()          
        {          
        }      
    } 
}