Sdílet prostřednictvím


CA1047: Nelze deklarovat chráněné členy v uzavřených typů

TypeName

DoNotDeclareProtectedMembersInSealedTypes

CheckId

CA1047

Kategorie

Microsoft.Design

Narušující změna

Nenarušující

Příčina

Veřejný typ je deklarován jako sealed (NotInheritable v jazyce Visual Basic) a deklaruje chráněný člen nebo chráněný vnořený typ.Toto pravidlo nehlásí porušení metod Finalize, které musí být definovány podle tohoto vzoru.

Popis pravidla

Typy deklarují chráněné členy, aby k nim odvozené typy mohly přistupovat nebo je přepisovat.Podle definice není možné dědit ze zapečetěného typu, což znamená, že chráněné metody uzavřených typů nelze volat.

Kompilátor jazyka C# zahlásí upozornění na tuto chybu.

Jak vyřešit porušení

Změna přístupové úrovně člena na soukromou nebo zpřístupnění typu pro dědičnost vyřeší porušení tohoto pravidla.

Kdy potlačit upozornění

Nepotlačujte upozornění na toto pravidlo.Zachování typu v aktuálním stavu může způsobit problémy při udržování a neposkytuje žádné výhody.

Příklad

Následující příklad ukazuje typ, který porušuje toto pravidlo.

Imports System

Namespace DesignLibrary

   Public NotInheritable Class BadSealedType
      Protected  Sub MyMethod
      End Sub
   End Class

End Namespace
using System;

namespace DesignLibrary
{
   public sealed class SealedClass
   {
      protected void ProtectedMethod(){}
   }
}