Vorgehensweise: Serialisieren mit DataContractSerializer (C#)How to: Serialize Using DataContractSerializer (C#)

Dieses Thema enthält ein Beispiel, das zum Serialisieren und Deserialisieren DataContractSerializer verwendet.This topic shows an example that serializes and deserializes using DataContractSerializer.

BeispielExample

Im folgenden Beispiel wird eine Reihe von Objekten erstellt, die XElement-Objekte enthalten.The following example creates a number of objects that contain XElement objects. Anschließend werden diese Objekte in Textdateien serialisiert und dann aus den Textdateien wieder deserialisiert.It then serializes them to text files, and then deserializes them from the text files.

using System;  
using System.Xml;  
using System.Xml.Linq;  
using System.IO;  
using System.Runtime.Serialization;  

public class XLinqTest  
{  
    public static void Main()  
    {  
        Test<XElement>(CreateXElement());  
        Test<XElementContainer>(new XElementContainer());  
        Test<XElementNullContainer>(new XElementNullContainer());  
    }  

    public static void Test<T>(T obj)  
    {  
        DataContractSerializer s = new DataContractSerializer(typeof(T));  
        using (FileStream fs = File.Open("test" + typeof(T).Name + ".xml", FileMode.Create))  
        {  
            Console.WriteLine("Testing for type: {0}", typeof(T));   
            s.WriteObject(fs, obj);  
        }  
        using (FileStream fs = File.Open("test" + typeof(T).Name + ".xml", FileMode.Open))  
        {  
            object s2 = s.ReadObject(fs);  
            if (s2 == null)  
                Console.WriteLine("  Deserialized object is null (Nothing in VB)");  
            else  
                Console.WriteLine("  Deserialized type: {0}", s2.GetType());  
        }  
    }  

    public static XElement CreateXElement()  
    {  
        return new XElement(XName.Get("NameInNamespace", "http://www.adventure-works.org"));  
    }  
}  

[DataContract]  
public class XElementContainer  
{  
    [DataMember]  
    public XElement member;  

    public XElementContainer()  
    {  
        member = XLinqTest.CreateXElement();  
    }  
}  

[DataContract]  
public class XElementNullContainer  
{  
    [DataMember]  
    public XElement member;  

    public XElementNullContainer()  
    {  
        member = null;  
    }  
}  

Dieses Beispiel erzeugt die folgende Ausgabe:This example produces the following output:

Testing for type: System.Xml.Linq.XElement  
  Deserialized type: System.Xml.Linq.XElement  
Testing for type: XElementContainer  
  Deserialized type: XElementContainer  
Testing for type: XElementNullContainer  
  Deserialized type: XElementNullContainer  

Siehe auchSee Also

Serialisieren von Objektdiagrammen, die XElement-Objekte enthalten (C#)Serializing Object Graphs that Contain XElement Objects (C#)