CA1012: 抽象型にはコンストラクターを含めません
TypeName |
AbstractTypesShouldNotHaveConstructors |
CheckId |
CA1012 |
分類 |
Microsoft.Design |
互換性に影響する変更点 |
なし |
原因
パブリック型が抽象型で、パブリック コンストラクターが含まれます。
規則の説明
抽象型上のコンストラクターは、派生型からのみ呼び出すことができます。パブリック コンストラクターで型のインスタンスが作成され、抽象型のインスタンスは自分で作成できないため、パブリック コンストラクターが含まれる抽象型のデザインは不適切になります。
違反の修正方法
この規則違反を修正するには、コンストラクターをプロテクトにするか、抽象型を宣言しないようにします。
警告を抑制する状況
この規則による警告は抑制しないでください。抽象型にはパブリック コンストラクターが含まれています。
使用例
この規則に違反する抽象型を使用したコード例を次に示します。
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()
{
}
}
}