Sdílet prostřednictvím


NetDataContractSerializer Třída

Definice

Serializuje a deserializuje instanci typu do datového proudu XML nebo dokumentu pomocí zadaných typů rozhraní .NET Framework. Tato třída se nemůže dědit.

public ref class NetDataContractSerializer sealed : System::Runtime::Serialization::XmlObjectSerializer, System::Runtime::Serialization::IFormatter
public sealed class NetDataContractSerializer : System.Runtime.Serialization.XmlObjectSerializer, System.Runtime.Serialization.IFormatter
type NetDataContractSerializer = class
    inherit XmlObjectSerializer
    interface IFormatter
Public NotInheritable Class NetDataContractSerializer
Inherits XmlObjectSerializer
Implements IFormatter
Dědičnost
NetDataContractSerializer
Implementuje

Příklady

Následující příklad kódu ukazuje typ s názvem Person , který je serializován pomocí NetDataContractSerializer. Atribut DataContractAttribute je použit na třídu a DataMemberAttribute je použit na členy (včetně soukromého člena) instruovat NetDataContractSerializer , co má serializovat.

// You must apply a DataContractAttribute or SerializableAttribute
// to a class to have it serialized by the NetDataContractSerializer.
[DataContract(Name = "Customer", Namespace = "http://www.contoso.com")]
class Person : IExtensibleDataObject
{
    [DataMember()]
    public string FirstName;
    [DataMember]
    public string LastName;
    [DataMember()]
    public int ID;

    public Person(string newfName, string newLName, int newID)
    {
        FirstName = newfName;
        LastName = newLName;
        ID = newID;
    }

    private ExtensionDataObject extensionData_Value;

    public ExtensionDataObject ExtensionData
    {
        get
        {
            return extensionData_Value;
        }
        set
        {
            extensionData_Value = value;
        }
    }
}

public sealed class Test
{
    private Test() { }

    public static void Main()
    {
        try
        {
            WriteObject("NetDataContractSerializerExample.xml");
            ReadObject("NetDataContractSerializerExample.xml");
        }

        catch (SerializationException serExc)
        {
            Console.WriteLine("Serialization Failed");
            Console.WriteLine(serExc.Message);
        }
        catch (Exception exc)
        {
            Console.WriteLine(
            "The serialization operation failed: {0} StackTrace: {1}",
            exc.Message, exc.StackTrace);
        }

        finally
        {
            Console.WriteLine("Press <Enter> to exit....");
            Console.ReadLine();
        }
    }

    public static void WriteObject(string fileName)
    {
        Console.WriteLine(
            "Creating a Person object and serializing it.");
        Person p1 = new Person("Zighetti", "Barbara", 101);
        FileStream fs = new FileStream(fileName, FileMode.Create);
        XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(fs);
        NetDataContractSerializer ser =
            new NetDataContractSerializer();
        ser.WriteObject(writer, p1);
        writer.Close();
    }

    public static void ReadObject(string fileName)
    {
        Console.WriteLine("Deserializing an instance of the object.");
        FileStream fs = new FileStream(fileName,
        FileMode.Open);
        XmlDictionaryReader reader =
            XmlDictionaryReader.CreateTextReader(fs, new XmlDictionaryReaderQuotas());
        NetDataContractSerializer ser = new NetDataContractSerializer();

        // Deserialize the data and read it from the instance.
        Person deserializedPerson =
            (Person)ser.ReadObject(reader, true);
        fs.Close();
        Console.WriteLine(String.Format("{0} {1}, ID: {2}",
        deserializedPerson.FirstName, deserializedPerson.LastName,
        deserializedPerson.ID));
    }
}
' You must apply a DataContractAttribute or SerializableAttribute
' to a class to have it serialized by the NetDataContractSerializer.
<DataContract(Name := "Customer", [Namespace] := "http://www.contoso.com")>  _
Class Person
    Implements IExtensibleDataObject
    <DataMember()>  _
    Public FirstName As String
    <DataMember()>  _
    Public LastName As String
    <DataMember()>  _
    Public ID As Integer
    
    
    Public Sub New(ByVal newfName As String, ByVal newLName As String, _
       ByVal newID As Integer) 
        FirstName = newfName
        LastName = newLName
        ID = newID
    
    End Sub 
    
    Private extensionData_Value As ExtensionDataObject
    
    
    Public Property ExtensionData() As ExtensionDataObject _
     Implements IExtensibleDataObject.ExtensionData
        Get
            Return extensionData_Value
        End Get
        Set
            extensionData_Value = value
        End Set
    End Property
End Class 


NotInheritable Public Class Test

    Private Sub New() 
    
    End Sub
     
    Public Shared Sub Main() 
        Try
            WriteObject("NetDataContractSerializerExample.xml")
            ReadObject("NetDataContractSerializerExample.xml")
        
        Catch serExc As SerializationException
            Console.WriteLine("Serialization Failed")
            Console.WriteLine(serExc.Message)
        Catch exc As Exception
            Console.WriteLine("The serialization operation failed: {0} StackTrace: {1}", exc.Message, exc.StackTrace)
        
        Finally
            Console.WriteLine("Press <Enter> to exit....")
            Console.ReadLine()
        End Try
    
    End Sub 
    
    
    Public Shared Sub WriteObject(ByVal fileName As String) 
        Console.WriteLine("Creating a Person object and serializing it.")
        Dim p1 As New Person("Zighetti", "Barbara", 101)
        Dim fs As New FileStream(fileName, FileMode.Create)
        Dim writer As XmlDictionaryWriter = XmlDictionaryWriter.CreateTextWriter(fs)
        Dim ser As New System.Runtime.Serialization.NetDataContractSerializer()

        ser.WriteObject(writer, p1)
        writer.Close()
    
    End Sub     

    Public Shared Sub ReadObject(ByVal fileName As String) 
        Console.WriteLine("Deserializing an instance of the object.")
        Dim fs As New FileStream(fileName, FileMode.Open)
        Dim reader As XmlDictionaryReader = _
           XmlDictionaryReader.CreateTextReader(fs, New XmlDictionaryReaderQuotas())
        Dim ser As New System.Runtime.Serialization.NetDataContractSerializer()
        
        ' Deserialize the data and read it from the instance.
        Dim deserializedPerson As Person = CType(ser.ReadObject(reader, True), Person)
        fs.Close()
        Console.WriteLine(String.Format("{0} {1}, ID: {2}", deserializedPerson.FirstName, deserializedPerson.LastName, deserializedPerson.ID))
    
    End Sub 
End Class

Poznámky

Zabezpečení

NetDataContractSerializer je nezabezpečený. Další informace najdete v průvodci zabezpečením BinaryFormatter.

The NetDataContractSerializer se liší od DataContractSerializer v jednom důležitém způsobem: NetDataContractSerializer zahrnuje clr typ informace v serializované XML, zatímco DataContractSerializer ne. Proto lze použít pouze v případě, NetDataContractSerializer že serializace a deserializace konce sdílejí stejné typy CLR.

Serializátor může serializovat typy, na které byl použit atribut DataContractAttribute nebo SerializableAttribute . Také serializuje typy, které implementují ISerializable.

Další informace o serializaci naleznete v tématu Serializace a deserializace.

Nekompatibilita s XElement

Třída XElement se používá k zápisu XML. Nelze však NetDataContractSerializer serializovat instanci typu . Následující kód proto selže s výjimkou: "Typ kořene 'System.Xml. Linq.XElement' není podporován na nejvyšší úrovni NetDataContractSerializer, protože je IXmlSerializable s IsAny=true a musí zapisovat veškerý jeho obsah včetně kořenového elementu."

FileStream fs = new FileStream("mystuff.xml", FileMode.Create, FileAccess.ReadWrite);
XElement myElement = new XElement("Parent", new XElement("child1", "form"),
    new XElement("child2", "base"),
    new XElement("child3", "formbase")
    );
NetDataContractSerializer dcs = new NetDataContractSerializer();
dcs.WriteObject(fs, myElement);
Dim fs As New FileStream("mystuff.xml", FileMode.Create, FileAccess.ReadWrite)
Dim myElement As New XElement("Parent", New XElement("child1", "form"), _
    New XElement("child2", "base"), _
    New XElement("child3", "formbase") _
    )
Dim ser As New System.Runtime.Serialization. _
  NetDataContractSerializer()
ser.WriteObject(fs, myElement)

Pokud XElement je však použit jako typ pole nebo vlastnost třídy, data obsažená polem nebo vlastností je serializována. Je to proto, že jako člen třídy data nejsou nejvyšší úrovní třídy.

Konstruktory

NetDataContractSerializer()

Inicializuje novou instanci NetDataContractSerializer třídy .

NetDataContractSerializer(StreamingContext)

Inicializuje novou instanci NetDataContractSerializer třídy se zadanými kontextovými daty streamování.

NetDataContractSerializer(StreamingContext, Int32, Boolean, FormatterAssemblyStyle, ISurrogateSelector)

Inicializuje novou instanci NetDataContractSerializer třídy se zadanými kontextovými daty; kromě toho určuje maximální počet položek v objektu, který má být serializován, a parametry pro určení, zda jsou nadbytečná data ignorována, metodu načítání sestavení a náhradní selektor.

NetDataContractSerializer(String, String)

Inicializuje novou instanci NetDataContractSerializer třídy se zadaným kořenovým elementem XML a oborem názvů.

NetDataContractSerializer(String, String, StreamingContext, Int32, Boolean, FormatterAssemblyStyle, ISurrogateSelector)

Inicializuje novou instanci NetDataContractSerializer třídy se zadanými kontextovými daty a kořenovým názvem a oborem názvů; kromě toho určuje maximální počet položek v objektu, který má být serializován, a parametry určující, zda jsou nadbytečná data ignorována, metodu načítání sestavení a náhradní selektor.

NetDataContractSerializer(XmlDictionaryString, XmlDictionaryString)

Inicializuje novou instanci NetDataContractSerializer třídy se dvěma parametry typu XmlDictionaryString , které obsahují kořenový prvek a obor názvů sloužící k určení obsahu.

NetDataContractSerializer(XmlDictionaryString, XmlDictionaryString, StreamingContext, Int32, Boolean, FormatterAssemblyStyle, ISurrogateSelector)

Inicializuje novou instanci NetDataContractSerializer třídy se zadanými kontextovými daty a kořenovým názvem a oborem názvů (jako XmlDictionaryString parametry); kromě toho určuje maximální počet položek v objektu, který má být serializován, a parametry určující, zda jsou nalezena nadbytečná data ignorována, metodu načítání sestavení a náhradní selektor.

Vlastnosti

AssemblyFormat

Získá hodnotu, která určuje metodu pro vyhledání a načítání sestavení.

Binder

Získá nebo nastaví objekt, který řídí načítání třídy.

Context

Získá nebo nastaví objekt, který umožňuje předávání kontextových dat, které jsou užitečné při serializaci nebo deserializaci.

IgnoreExtensionDataObject

Získá hodnotu, která určuje, zda data zadaná rozšířením objektu je ignorována.

MaxItemsInObjectGraph

Získá maximální počet položek povolených v objektu, který má být serializován.

SurrogateSelector

Získá nebo nastaví objekt, který pomáhá formátovací při výběru náhradní pro serializaci.

Metody

Deserialize(Stream)

Deserializuje dokument XML nebo streamuje do objektu.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
IsStartObject(XmlDictionaryReader)

Určuje, zda XmlDictionaryReader je umístěn na objekt, který lze deserializovat pomocí zadané čtečky.

IsStartObject(XmlReader)

Určuje, zda XmlReader je umístěn na objekt, který lze deserializovat pomocí zadané čtečky.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
ReadObject(Stream)

Čte datový proud XML nebo dokument s Stream a vrátí deserializovaný objekt.

(Zděděno od XmlObjectSerializer)
ReadObject(XmlDictionaryReader)

Čte dokument XML nebo datový proud s XmlDictionaryReader a vrátí deserializovaný objekt.

(Zděděno od XmlObjectSerializer)
ReadObject(XmlDictionaryReader, Boolean)

Čte datový proud XML nebo dokument s XmlDictionaryReader a vrátí deserializovaný objekt; také kontroluje, zda data objektu odpovídají názvu a oboru názvů použité k vytvoření serializátoru.

ReadObject(XmlReader)

Čte datový proud XML nebo dokument s XmlDictionaryReader a vrátí deserializovaný objekt.

ReadObject(XmlReader, Boolean)

Čte datový proud XML nebo dokument s XmlDictionaryReader a vrátí deserializovaný objekt; také kontroluje, zda data objektu odpovídají názvu a oboru názvů použité k vytvoření serializátoru.

Serialize(Stream, Object)

Serializuje graf zadaného objektu pomocí zadaného zapisovače.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
WriteEndObject(XmlDictionaryWriter)

Zapíše uzavírací element XML pomocí .XmlDictionaryWriter

WriteEndObject(XmlWriter)

Zapíše uzavírací element XML pomocí .XmlWriter

WriteObject(Stream, Object)

Zapíše úplný obsah (začátek, obsah a konec) objektu do dokumentu XML nebo datového proudu se zadaným Streamobjektem .

(Zděděno od XmlObjectSerializer)
WriteObject(XmlDictionaryWriter, Object)

Zapíše úplný obsah (začátek, obsah a konec) objektu do dokumentu XML nebo datového proudu se zadaným XmlDictionaryWriterobjektem .

(Zděděno od XmlObjectSerializer)
WriteObject(XmlWriter, Object)

Zapíše úplný obsah (začátek, obsah a konec) objektu do dokumentu XML nebo datového proudu se zadaným XmlWriterobjektem .

WriteObjectContent(XmlDictionaryWriter, Object)

Zapíše obsah XML pomocí .XmlDictionaryWriter

WriteObjectContent(XmlWriter, Object)

Zapíše obsah XML pomocí .XmlWriter

WriteStartObject(XmlDictionaryWriter, Object)

Zapíše levý element XML pomocí .XmlDictionaryWriter

WriteStartObject(XmlWriter, Object)

Zapíše levý element XML pomocí .XmlWriter

Platí pro

Viz také