CA1048 : Ne pas déclarer les membres virtuels dans les types sealedCA1048: Do not declare virtual members in sealed types

TypeNameTypeName DoNotDeclareVirtualMembersInSealedTypesDoNotDeclareVirtualMembersInSealedTypes
CheckIdCheckId CA1048CA1048
CategoryCategory Microsoft.DesignMicrosoft.Design
Modification avec ruptureBreaking Change RuptureBreaking

CauseCause

Un type public est sealed et déclare une méthode qui est à la fois virtual (Overridable en Visual Basic) et non finale.A public type is sealed and declares a method that is both virtual (Overridable in Visual Basic) and not final. Cette règle ne signale pas les violations pour les types délégués qui doivent suivre ce modèle.This rule does not report violations for delegate types, which must follow this pattern.

Description de la règleRule Description

Les types déclarent des méthodes comme étant virtuelles afin d'hériter de types en mesure de substituer l'implémentation de la méthode virtuelle.Types declare methods as virtual so that inheriting types can override the implementation of the virtual method. Par définition, vous ne peut pas hériter d’un type sealed, en apportant une méthode virtuelle sur un type sealed sans signification.By definition, you cannot inherit from a sealed type, making a virtual method on a sealed type meaningless.

Les compilateurs c# et Visual Basic n’autorisent pas les types de violation de cette règle.The Visual Basic and C# compilers do not allow types to violate this rule.

Comment corriger les violationsHow to Fix Violations

Pour corriger une violation de cette règle, rendez la méthode non virtuelle ou rendez le type héritable.To fix a violation of this rule, make the method non-virtual or make the type inheritable.

Quand supprimer les avertissementsWhen to Suppress Warnings

Ne supprimez aucun avertissement de cette règle.Do not suppress a warning from this rule. Laisser le type dans son état actuel peut entraîner des problèmes de maintenance et ne fournit pas d’avantages.Leaving the type in its current state can cause maintenance issues and does not provide any benefits.

ExempleExample

L’exemple suivant montre un type qui viole cette règle.The following example shows a type that violates this rule.

using namespace System;

namespace DesignLibrary
{                        
    public ref class SomeType sealed
    {
    public:
        virtual bool VirtualFunction() { return true; }
    };
}