Sdílet prostřednictvím


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