Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

ISerializable.GetObjectData (Método)

Llena SerializationInfo con los datos necesarios para serializar el objeto de destino.

Espacio de nombres:  System.Runtime.Serialization
Ensamblado:  mscorlib (en mscorlib.dll)

void GetObjectData(
	SerializationInfo info,
	StreamingContext context
)

Parámetros

info
Tipo: System.Runtime.Serialization.SerializationInfo
SerializationInfo que se rellena con datos.
context
Tipo: System.Runtime.Serialization.StreamingContext
Destino (vea StreamingContext) de esta serialización.

ExcepciónCondición
SecurityException

El llamador no dispone del permiso requerido.

El formateador realiza automáticamente el seguimiento y la serialización de todos los objetos incluidos en SerializationInfo.

Código que llama al método GetObjectDatarequiere el permiso SecurityPermission para proporcionar servicios de serialización. Enumeración asociada: SecurityPermissionFlag.SerializationFormatter.

NotaNota

No se garantiza que se llamará a este método sólo una vez por cada instancia de objeto durante la serialización. Por ello, el método se debe implementar de forma que su comportamiento sea el mismo independientemente del número de veces que se le llame.

El ejemplo siguiente utiliza el método GetObjectData para establecer los valores alternativos para un objeto serializado. El código utiliza el método AddValue de la clase SerializationInfo para almacenar los valores alternativos cuando se serializa el objeto. De forma inversa, si se llama al constructor de la clase Person durante la deserialización, se recuperan los valores alternativos utilizando el método GetValue y se reasignan a los campos de los objetos.


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

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft