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