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()
{
}
}
}