CA1012: I tipi astratti non devono avere costruttori
TypeName |
AbstractTypesShouldNotHaveConstructors |
CheckId |
CA1012 |
Category |
Microsoft.Design |
Breaking Change |
Non sostanziale |
Causa
Un tipo pubblico è astratto e presenta un costruttore pubblico.
Descrizione della regola
I costruttori sui tipi astratti possono essere chiamati solo da tipi derivati. Poiché i costruttori pubblici creano istanze di un tipo e non è possibile creare istanze di un tipo astratto, per una buona progettazione non bisognerebbe creare un tipo astratto con costruttore pubblico.
Come correggere le violazioni
Per correggere una violazione di questa regola, rendere protetto il costruttore oppure non dichiarare il tipo come astratto.
Esclusione di avvisi
Non escludere un avviso da questa regola. Il tipo astratto dispone di un costruttore pubblico.
Esempio
Nell'esempio riportato di seguito è contenuto un tipo astratto che viola questa regola.
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()
{
}
}
}
Nell'esempio seguente , la violazione precedente viene corretta tramite l'impostazione dell'accessibilità del costruttore da public su 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()
{
}
}
}