(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

ISerializable.GetObjectData-Methode

Füllt eine SerializationInfo mit den Daten auf, die zum Serialisieren des Zielobjekts erforderlich sind.

Namespace:  System.Runtime.Serialization
Assembly:  mscorlib (in mscorlib.dll)

void GetObjectData(
	SerializationInfo info,
	StreamingContext context
)

Parameter

info
Typ: System.Runtime.Serialization.SerializationInfo
Die mit Daten zu füllende SerializationInfo.
context
Typ: System.Runtime.Serialization.StreamingContext
Das Ziel (siehe StreamingContext) dieser Serialisierung.

AusnahmeBedingung
SecurityException

Der Aufrufer verfügt nicht über die erforderliche Berechtigung.

Alle in der SerializationInfo enthaltenen Objekte werden automatisch vom Formatierungsprogramm nachverfolgt und serialisiert.

Für Code, der GetObjectData aufruft, ist zum Bereitstellen von Serialisierungsdiensten die SecurityPermission erforderlich. Zugeordnete Enumeration: SecurityPermissionFlag.SerializationFormatter

HinweisHinweis

Es ist nicht sichergestellt, dass diese Methode während der Serialisierung für jede Objektinstanz nur einmal aufgerufen wird. Daher sollte die Methode so implementiert werden, dass ihr Verhalten unabhängig davon ist, wie oft sie aufgerufen wird.

Im folgenden Beispiel werden mithilfe der GetObjectData-Methode alternative Werte für ein serialisiertes Objekt festgelegt. Im Code wird die AddValue-Methode der SerializationInfo-Klasse verwendet, damit bei Serialisierung des Objekts alternative Werte gespeichert werden können. Wenn der Konstruktor der Person-Klasse hingegen bei der Deserialisierung aufgerufen wird, werden die alternativen Werte mithilfe der GetValue-Methode abgerufen und den Feldern des Objekts neu zugewiesen.


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

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 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 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft