CA1053: Typy obsługi statycznej nie powinny mieć konstruktorów
TypeName |
StaticHolderTypesShouldNotHaveConstructors |
CheckId |
CA1053 |
Kategoria |
Microsoft.Design |
Zmiana kluczowa |
Kluczowa |
Przyczyna
Typ publiczny lub publiczny zagnieżdżony deklaruje tylko statyczne elementy członkowskie i ma publiczny lub chroniony konstruktor domyślny.
Opis reguły
Konstruktor jest zbędny, ponieważ wywołanie statycznego elementu członkowskiego nie wymaga wystąpienia tego typu.Ponieważ typ nie ma niestatycznych elementów członkowskich, tworzenie wystąpień nie zapewnia dostępu do jakiegokolwiek elementu członkowskiego typu.
Jak naprawić naruszenia
Aby naprawić naruszenie tej zasady, usuń domyślny konstruktora lub uczyń go prywatnym.
[!UWAGA]
Jeśli typ nie definiuje żadnych konstruktorów niektóre kompilatory automatycznie tworzą domyślny publiczny konstruktor.Jeśli tak jest w przypadku tego typu, dodaj domyślny konstruktor prywatny aby usunąć naruszenie.
Kiedy pominąć ostrzeżenia
Nie należy pomijać ostrzeżenia dotyczącego tej reguły.Obecność konstruktora sugeruje, że typ nie jest typem statycznym.
Przykład
Poniższy przykład pokazuje typ, który narusza regułę.Należy zauważyć, że w kodzie źródłowym nie ma domyślnego konstruktora.Gdy ten kod zostaje skompilowany do zestawu, kompilator C# wstawi domyślny konstruktor, co naruszy regułę.Aby to naprawić, należy zadeklarować prywatny konstruktor.
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() {}
}
}