Compartilhar via


Tipos abstratos não devem ter construtores

TypeName

AbstractTypesShouldNotHaveConstructors

CheckId

CA1012

Category (Categoria)

Microsoft.Design

Quebrando alterar

Não separável

Causa

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

Descrição da regra

Construtores em tipos abstratos só podem ser chamados por tipos derivados.Como construtores públicos criar instâncias de um tipo e não é possível criar instâncias de um tipo abstrato, um tipo abstrato com um construtor público incorretamente foi projetado.

Como corrigir violações

Para corrigir uma violação dessa regra, ou tornar o construtor protegido ou não declarar o tipo sistema autônomo abstrato.

Quando suprimir avisos

Não suprimir um aviso da regra.O tipo abstrato tem um construtor público.

Exemplo

O exemplo a seguir contém um tipo abstrato que violam essa 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 corrige a violação anterior alterando a acessibilidade do construtor de public para 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()          
        {          
        }      
    } 
}