CA2238 : Implémentez les méthodes de sérialisation comme il se doitCA2238: Implement serialization methods correctly

TypeNameTypeName ImplementSerializationMethodsCorrectlyImplementSerializationMethodsCorrectly
CheckIdCheckId CA2238CA2238
CategoryCategory Microsoft.UsageMicrosoft.Usage
Modification avec ruptureBreaking Change Avec rupture - Si la méthode est visible en dehors de l’assembly.Breaking - If the method is visible outside the assembly.

Sans rupture - Si la méthode n’est pas visible à l’extérieur de l’assembly.Non Breaking - If the method is not visible outside the assembly.

CauseCause

Une méthode qui gère un événement de sérialisation n’a pas la signature, le type de retour ou la visibilité appropriée.A method that handles a serialization event does not have the correct signature, return type, or visibility.

Description de la règleRule Description

Une méthode est désignée un gestionnaire d’événements de sérialisation en appliquant l’un des attributs d’événement de sérialisation suivants :A method is designated a serialization event handler by applying one of the following serialization event attributes:

Comment corriger les violationsHow to Fix Violations

Pour corriger une violation de cette règle, corrigez la signature, le type de retour ou la visibilité du Gestionnaire d’événements de sérialisation.To fix a violation of this rule, correct the signature, return type, or visibility of the serialization event handler.

Quand supprimer les avertissementsWhen to Suppress Warnings

Ne supprimez aucun avertissement de cette règle.Do not suppress a warning from this rule.

ExempleExample

L’exemple suivant montre des gestionnaires d’événements sérialisation correctement déclarée.The following example shows correctly declared serialization event handlers.

Imports System
Imports System.Runtime.Serialization

Namespace UsageLibrary

   <SerializableAttribute> _ 
   Public Class SerializationEventHandlers

      <OnSerializingAttribute> _ 
      Private Sub OnSerializing(context As StreamingContext) 
      End Sub

      <OnSerializedAttribute> _ 
      Private Sub OnSerialized(context As StreamingContext) 
      End Sub

      <OnDeserializingAttribute> _ 
      Private Sub OnDeserializing(context As StreamingContext)
      End Sub

      <OnDeserializedAttribute> _ 
      Private Sub OnDeserialized(context As StreamingContext)
      End Sub

   End Class

End Namespace
using System;
using System.Runtime.Serialization;

namespace UsageLibrary
{
   [SerializableAttribute]
   public class SerializationEventHandlers
   {
      [OnSerializingAttribute]
      void OnSerializing(StreamingContext context) {}

      [OnSerializedAttribute]
      void OnSerialized(StreamingContext context) {}

      [OnDeserializingAttribute]
      void OnDeserializing(StreamingContext context) {}

      [OnDeserializedAttribute]
      void OnDeserialized(StreamingContext context) {}
   }
}

CA2236 : Appelez les méthodes de la classe de base sur les types ISerializableCA2236: Call base class methods on ISerializable types

CA2240 : Implémentez ISerializable correctementCA2240: Implement ISerializable correctly

CA2229 : Implémentez des constructeurs de sérialisationCA2229: Implement serialization constructors

CA2235 : Marquez tous les champs non sérialisablesCA2235: Mark all non-serializable fields

CA2237 : Marquez les types ISerializable avec SerializableAttributeCA2237: Mark ISerializable types with SerializableAttribute

CA2239 : Spécifiez des méthodes de désérialisation pour les champs facultatifsCA2239: Provide deserialization methods for optional fields

CA2120 : Sécurisez les constructeurs de sérialisationCA2120: Secure serialization constructors