CA1048: Nie deklaruj wirtualnych elementów członkowskich w typach zapieczętowanych
TypeName |
DoNotDeclareVirtualMembersInSealedTypes |
CheckId |
CA1048 |
Kategoria |
Microsoft.Design |
Zmiana kluczowa |
Kluczowa |
Przyczyna
Typ publiczny jest zapieczętowany i deklaruje metodę, która jest zarówno virtual (Overridable w języku Visual Basic) i nie finalna.Ta reguła nie zgłasza naruszenia dla typów delegowanych, które muszą przestrzegać tego wzorca.
Opis reguły
Metody wirtualne są zadeklarowane w typach tak, aby typy dziedziczące mogły zmieniać implementację metod wirtualnych.Z definicji, nie można dziedziczyć zamkniętych typu, co sprawia, że metoda wirtualna na zapieczętowanym typie jest bez znaczenia.
Kompilatory Visual Basic .NET i C# nie zezwalają, aby typ naruszały tę regułę.
Jak naprawić naruszenia
Aby naprawić naruszenie tej reguły, należy zrobić metodę nie-wirtualną lub należy zrobić typ możliwym do dziedziczenia.
Kiedy pominąć ostrzeżenia
Nie należy pomijać ostrzeżenia dotyczącego tej reguły.Pozostawiając typ w bieżący stanie może spowodować problemy z konserwacją i nie daje żadnych korzyści.
Przykład
Poniższy przykład pokazuje typ, który narusza regułę.
using namespace System;
namespace DesignLibrary
{
public ref class SomeType sealed
{
public:
virtual bool VirtualFunction() { return true; }
};
}