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