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