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