Compartilhar via


CA1012: Tipos abstratos não devem ter construtores

TypeName

AbstractTypesShouldNotHaveConstructors

CheckId

CA1012

Category (Categoria)

Microsoft.Design

Alteração Significativa

Sem quebra

Causa

Um tipo público é abstrato e tem um construtor público.

Descrição da Regra

Construtores em tipos abstratos podem ser chamados somente por tipos derivados.Porque construtores públicos criam instâncias de um tipo, e você não pode criar instâncias de um tipo abstrato, um tipo abstrato que tem um construtor público é criado incorretamente.

Como Corrigir Violações

Para corrigir uma violação desta regra, faça o construtor protegido ou não declare o tipo como abstrato.

Quando Suprimir Alertas

Não elimine um alerta desta regra.O tipo abstrato tem um construtor público.

Exemplo

O exemplo a seguir contém um tipo abstrato que viola esta regra.

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

O exemplo a seguir fixa a violação anterior alterando a acessibilidade do construtor de public a 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()          
        {          
        }      
    } 
}