Partager via


Les types abstraits ne doivent pas avoir de constructeurs

Mise à jour : novembre 2007

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()          
        {          
        }      
    } 
}