Udostępnij za pośrednictwem


CA1047: Nie są deklarowane chronionych członków w zamkniętych typów

TypeName

DoNotDeclareProtectedMembersInSealedTypes

CheckId

CA1047

Kategoria

Microsoft.Design

Złamanie zmiany

Bez podziału

Przyczyna

Typ publiczny jest sealed (NotInheritable w języku Visual basic) i deklaruje chroniony członek lub chronionych typu zagnieżdżonego.Ta reguła nie zgłaszanie przypadków naruszenia dla Finalize metody, które należy wykonać tego wzorca.

Opis reguły

Typy zadeklarować elementy chronione tak, że dziedziczenie typów można uzyskać dostęp lub zastępują członka.Z definicji nie może dziedziczyć z typu zamkniętych, co oznacza, że chronione metody zamkniętych typów nie może być wywoływana.

C# kompilator generuje ostrzeżenie mówiące, dla tego błędu.

Jak naprawić naruszenia

Aby naprawić naruszenie tej zasady, zmienić poziom dostępu członka na prywatne lub wprowadzić typ dziedziczonych.

Kiedy do pomijania ostrzeżenia

Nie pomijaj ostrzeżenie od tej reguły.Pozostawiając typu w jego aktualnym stanie mogą powodować problemy konserwacji i nie daje żadnych korzyści.

Przykład

Poniższy przykład pokazuje typ, który narusza tej reguły.

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