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