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