CA1012: абстрактные типы не должны иметь конструкторы
TypeName |
AbstractTypesShouldNotHaveConstructors |
CheckId |
CA1012 |
Категория |
Microsoft.Design |
Критическое изменение |
Не критическое |
Причина
Открытый тип является абстрактным и имеет открытый конструктор.
Описание правила
Конструкторы абстрактных типов могут быть вызваны только производными типами. Открытые конструкторы создают экземпляры типа. Невозможно создавать экземпляры абстрактного типа; абстрактный тип с открытым конструктором является недопустимым.
Устранение нарушений
Чтобы исправить нарушение данного правила, либо сделайте конструктор защищенным, либо не объявляйте тип абстрактным.
Отключение предупреждений
Для этого правила отключать вывод предупреждений не следует. Абстрактный тип имеет открытый конструктор.
Пример
В следующем примере показан абстрактный тип, нарушающий это правило.
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()
{
}
}
}
В следующем примере данное нарушение устраняется путем изменения модификатора доступа к конструктору с public на 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()
{
}
}
}