CA1012: Abstraktní typy by neměl mít konstruktory
TypeName |
AbstractTypesShouldNotHaveConstructors |
CheckId |
CA1012 |
Kategorie |
Microsoft.Design |
Narušující změna |
Nenarušující |
Příčina
Veřejné typ je abstraktní a obsahuje veřejný konstruktor.
Popis pravidla
Konstruktory abstraktních typů mohou být volány pouze odvozenými typy.Jelikož veřejné konstruktory vytváření instance typu, přičemž nelze vytvořit instance abstraktního typu, je abstraktní typ obsahující veřejný konstruktor nesprávně navržen.
Jak vyřešit porušení
Pro vyřešení porušení tohoto pravidla je zapotřebí stanovit, aby byl konstruktor chráněný nebo nedeklarovat typ jako abstraktní.
Kdy potlačit upozornění
Nepotlačujte upozornění na toto pravidlo.Abstraktní typ obsahuje veřejný konstruktor.
Příklad
Následující příklad obsahuje abstraktní typ, který porušuje toto pravidlo.
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()
{
}
}
}
Následující příklad řeší předchozí porušení změnou přístupnosti ke konstruktoru z public na 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()
{
}
}
}