CA1053: типы статических владельцев не должны иметь конструкторы
TypeName |
StaticHolderTypesShouldNotHaveConstructors |
CheckId |
CA1053 |
Категория |
Microsoft.Design |
Критическое изменение |
Критическое изменение |
Причина
В открытом или вложенном открытом типе объявляются только статические элементы и имеется открытый или защищенный конструктор по умолчанию.
Описание правила
Конструктор не нужен, поскольку при вызове статических членов не требуется экземпляр типа.Кроме того, в типе нет нестатических членов, поэтому создание экземпляра не предоставит доступ к членам этого типа.
Устранение нарушений
Чтобы исправить нарушение этого правила, удалите конструктор по умолчанию или сделайте его закрытым.
![]() |
---|
Некоторые компиляторы автоматически создают открытый конструктор по умолчанию, если тип не определяет никакие конструкторы.В этом случае добавьте закрытый конструктор по умолчанию, чтобы исправить нарушение правила. |
Отключение предупреждений
Для этого правила отключать вывод предупреждений не следует.Наличие конструктора означает, что тип не является статическим.
Пример
В следующем примере показан тип, который нарушает данное правило.Обратите внимание, что в исходном коде отсутствует конструктор по умолчанию.При компиляции этого кода в сборку компилятор C# вставит конструктор по умолчанию, который нарушит данное правило.Чтобы исправить ошибку, объявите закрытый конструктор.
using System;
namespace DesignLibrary
{
public class NoInstancesNeeded
{
// Violates rule: StaticHolderTypesShouldNotHaveConstructors.
// Uncomment the following line to correct the violation.
// private NoInstancesNeeded() {}
public static void Method1() {}
public static void Method2() {}
}
}