CA1012: Tipos abstratos não devem ter construtores

TypeName

AbstractTypesShouldNotHaveConstructors

CheckId

CA1012

<strong>Categoria</strong>

Microsoft.design

Alteração significativa

Não-separável

Causa

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

Descrição da regra

Construtores de tipos abstratos podem ser chamados apenas por tipos derivados. Porque os construtores públicos criar instâncias de um tipo e não é possível criar instâncias de um tipo abstrato, um tipo abstrato que tem um construtor público incorretamente foi projetado.

Como corrigir violações

Para corrigir uma violação desta regra, faça o construtor protegido ou não declarar o tipo como 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 viola 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()          
        {          
        }      
    } 
}