Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez aussi afficher la version anglaise dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte.
Traduction
Anglais
Cette documentation est archivée et n’est pas conservée.

ISerializable.GetObjectData, méthode

Remplit SerializationInfo avec les données nécessaires pour sérialiser l'objet cible.

Espace de noms :  System.Runtime.Serialization
Assembly :  mscorlib (dans mscorlib.dll)

void GetObjectData(
	SerializationInfo info,
	StreamingContext context
)

Paramètres

info
Type : System.Runtime.Serialization.SerializationInfo
SerializationInfo à remplir de données.
context
Type : System.Runtime.Serialization.StreamingContext
Destination (consultez StreamingContext) de cette sérialisation.

ExceptionCondition
SecurityException

L'appelant n'a pas l'autorisation requise.

Tout objet inclus dans SerializationInfo est automatiquement suivi et sérialisé par le formateur.

Du code appelant GetObjectData a besoin de SecurityPermission pour fournir des services de sérialisation. Énumération associée : SecurityPermissionFlag.SerializationFormatter.

RemarqueRemarque

Il n'est pas garanti que cette méthode sera appelée une seule fois par instance d'objet pendant la sérialisation. Par conséquent, la méthode doit être implémentée de telle sorte que son comportement soit le même quel que soit le nombre de fois où elle est appelée.

L'exemple suivant utilise la méthode GetObjectData pour définir d'autres valeurs pour un objet sérialisé. Le code utilise la méthode AddValue() de la classe SerializationInfo pour stocker les autres valeurs lorsque l'objet est sérialisé. Inversement, lorsque le constructeur de la classe Person est appelé pendant la désérialisation, les autres valeurs sont récupérées à l'aide de la méthode GetValue et réassignées aux champs de l'objet.


using System;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;
using System.Security.Permissions;
using System.IO;

[assembly: SecurityPermission(
SecurityAction.RequestMinimum, Execution = true)]
namespace ISerializableExample
{
    class Program
    {
        public static void Main()
        {
            try
            {
                Run();
            }
            catch (Exception exc)
            {
                Console.WriteLine("{0}: {1}", exc.Message, exc.StackTrace);
            }
            finally
            {
                Console.WriteLine("Press Enter to exit....");
                Console.ReadLine();
            }
        }

        static void Run()
        {            
            BinaryFormatter binaryFmt = new BinaryFormatter();
            Person p = new Person();
            p.IdNumber = 1010;
            p.Name = "AAAAA";
            FileStream fs = new FileStream
                ("Person.xml", FileMode.OpenOrCreate);
            binaryFmt.Serialize(fs, p);
            fs.Close();
            Console.WriteLine
                ("Original Name: {0}, Original ID: {1}", p.Name, p.IdNumber);

            // Deserialize.
            fs = new FileStream
                ("Person.xml", FileMode.OpenOrCreate);
            Person p2 = (Person)binaryFmt.Deserialize(fs);
                Console.WriteLine("New Name: {0}, New ID: {1}", p2.Name, p2.IdNumber);
            fs.Close();
            }
        }
    [Serializable]
    public class Person : ISerializable
    {
        private string name_value;
        private int ID_value;

        public Person() { }
        protected Person(SerializationInfo info, StreamingContext context)
        {
            if (info == null)
                throw new System.ArgumentNullException("info");
            name_value = (string)info.GetValue("AltName", typeof(string));
            ID_value = (int)info.GetValue("AltID", typeof(int));
        }

        [SecurityPermission(SecurityAction.LinkDemand,
            Flags = SecurityPermissionFlag.SerializationFormatter)]
        public virtual void GetObjectData(
        SerializationInfo info, StreamingContext context)
        {
            if (info == null)
                throw new System.ArgumentNullException("info");
            info.AddValue("AltName", "XXX");
            info.AddValue("AltID", 9999);
        }

        public string Name
        {
            get { return name_value; }
            set { name_value = value; }
        }

        public int IdNumber
        {
            get { return ID_value; }
            set { ID_value = value; }
        }
    }
}


.NET Framework

Pris en charge dans : 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Afficher: