Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Mise à jour : novembre 2007
TypeName |
ImplementSerializationMethodsCorrectly |
CheckId |
CA2238 |
Catégorie |
Microsoft.Usage |
Modification avec rupture |
Avec rupture - Si la méthode est visible à l'extérieur de l'assembly. Sans rupture - Si la méthode n'est pas visible à l'extérieur de l'assembly. |
Cause
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.
Description de la règle
Une méthode est désignée en tant que gestionnaire d'événements de sérialisation en s'appliquant l'un des attributs d'événement de sérialisation suivants :
Les gestionnaires d'événements de sérialisation acceptent un unique paramètre de type System.Runtime.Serialization.StreamingContext, retournent void et présentent la visibilité private.
Comment corriger les 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.
Quand supprimer les avertissements
Ne supprimez aucun avertissement de cette règle.
Exemple
L'exemple suivant présente des gestionnaires d'événements de sérialisation déclarés correctement.
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) {}
}
}
Règles connexes
Appelez les méthodes de la classe de base sur des types ISerializable
Implémentez ISerializable comme il se doit
Implémentez des constructeurs de sérialisation
Marquez tous les champs non sérialisables
Marquer les types ISerializable avec SerializableAttribute
Spécifiez des méthodes de désérialisation pour les champs facultatifs