CA1053: Držitel statické typy by neměl mít konstruktory
TypeName |
StaticHolderTypesShouldNotHaveConstructors |
CheckId |
CA1053 |
Kategorie |
Microsoft.Design |
Narušující změna |
Narušující |
Příčina
Veřejný nebo vnořený veřejný typ deklaruje pouze statické členy a má veřejný nebo chráněný výchozí konstruktor.
Popis pravidla
Konstruktor je nezbytný, protože volání statických členů nevyžaduje instanci typu.Protože typ neobsahuje nestatické členy, vytvoření instance neposkytuje přístup žádnému z členů daného typu..
Jak vyřešit porušení
Pro napravení porušení tohoto pravidla je zapotřebí odebrat výchozí konstruktor nebo jej učinit soukromým.
[!POZNÁMKA]
Některé kompilátory automaticky vytváří veřejný výchozí konstruktor, nedefinuje-li type žádné konstruktory.Pokud se jedná o takový případ, je zapotřebí přidat soukromý výchozí konstruktor pro vyloučení narušení.
Kdy potlačit upozornění
Nepotlačujte upozornění na toto pravidlo.Přítomnost konstruktoru naznačuje, že typ není statickým typem.
Příklad
Následující příklad ukazuje typ, který porušuje toto pravidlo.Všimněte si zdrojový kód neobsahuje žádný výchozí konstruktor.Při zkompilování tohoto kódu do sestavení, vloží kompilátor jazyka C# výchozí konstruktor, který poruší toto pravidlo.Pro napravení tohoto problému je zapotřebí deklarovat soukromý 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() {}
}
}