Export (0) Print
Expand All
Expand Minimize

CA1012: Abstract types should not have constructors

TypeName

AbstractTypesShouldNotHaveConstructors

CheckId

CA1012

Category

Microsoft.Design

Breaking Change

Non-breaking

A public type is abstract and has a public constructor.

Constructors on abstract types can be called only by derived types. Because public constructors create instances of a type, and you cannot create instances of an abstract type, an abstract type that has a public constructor is incorrectly designed.

To fix a violation of this rule, either make the constructor protected or do not declare the type as abstract.

Do not suppress a warning from this rule. The abstract type has a public constructor.

The following example contains an abstract type that violates this rule.

Imports System     

Namespace Samples

    ' Violates this rule       
    Public MustInherit Class Book 

        Public Sub New()          
        End Sub  

    End Class  

End Namespace

The following example fixes the previous violation by changing the accessibility of the constructor from public to protected.

Imports System     

Namespace Samples

    ' Violates this rule       
    Public MustInherit Class Book 

        Protected Sub New()          
        End Sub  

    End Class  

End Namespace
Show:
© 2014 Microsoft