CA1012 : Les types abstraits ne doivent pas avoir de constructeurs
TypeName |
AbstractTypesShouldNotHaveConstructors |
CheckId |
CA1012 |
Catégorie |
Microsoft.CSharp |
Modification avec rupture |
Modification sans rupture |
Cause
Un type public est abstrait et présente un constructeur public.
Description de la règle
Les constructeurs des types abstraits peuvent être appelés uniquement par des types dérivés. Étant donné que les constructeurs publics créent des instances d'un type et que vous ne pouvez pas créer d'instance d'un type abstrait, un type abstrait doté d'un constructeur public est de conception incorrecte.
Comment corriger les violations
Pour corriger une violation de cette règle, protégez le constructeur ou ne déclarez pas le type en tant qu'abstrait.
Quand supprimer les avertissements
Ne supprimez aucun avertissement de cette règle. Le type abstrait a un constructeur public.
Exemple
L'exemple suivant contient un type abstrait qui enfreint cette règle.
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()
{
}
}
}
L'exemple suivant résout la violation précédente en modifiant l'accessibilité du constructeur de public en 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()
{
}
}
}