Udostępnij za pośrednictwem


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; }
    };
}