NetDataContractSerializer Třída

Definice

Serializuje a deserializuje instanci typu do datového proudu XML nebo dokumentu pomocí zadaných typů rozhraní .NET Framework. Tuto třídu nelze zdě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 pojmenovanýPerson, který je serializován .NetDataContractSerializer Atribut DataContractAttribute se použije u třídy a DataMemberAttribute použije se u členů (včetně soukromého člena) a dá pokyn, 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.

Liší NetDataContractSerializer se od důležitého DataContractSerializer způsobu: NetDataContractSerializer zahrnuje informace o typu CLR v serializovaném XML, zatímco DataContractSerializer ne. Proto lze použít pouze v případě, NetDataContractSerializer že serializace i deserializace konce sdílejí stejné typy CLR.

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

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

Nekompatibilitu s XElement

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

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 se však používá jako typ pole nebo vlastnosti třídy, data obsažená polem nebo vlastností jsou serializována. Důvodem je to, že jako člen třídy nejsou data 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é mají být serializovány, a parametry určující, zda jsou nadbytečná data ignorována, metoda načítání sestavení a náhradní selektor.

NetDataContractSerializer(String, String)

Inicializuje novou instanci NetDataContractSerializer třídy pomocí zadaného kořenového elementu XML a oboru 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é mají být serializovány, a parametry určující, zda jsou nadbytečná data ignorována, metoda 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é mají být serializovány, a parametry určující, zda jsou nalezena nadbytečná data ignorována, metoda 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í třídu načítání.

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 jsou ignorována.

MaxItemsInObjectGraph

Získá maximální počet položek povolených v objektu serializovat.

SurrogateSelector

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

Metody

Deserialize(Stream)

Deserializuje dokument XML nebo datový proud do objektu.

Equals(Object)

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

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

Slouží jako výchozí funkce hash.

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

Type Získá aktuální instanci.

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

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

IsStartObject(XmlReader)

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

MemberwiseClone()

Vytvoří použádnou kopii aktuálního souboru Object.

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

Přečte datový proud XML nebo dokument s deserializovaným objektem Stream a vrátí deserializovaný objekt.

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

Přečte dokument XML nebo datový proud s deserializovaným objektem XmlDictionaryReader a vrátí deserializovaný objekt.

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

Načte datový proud XML nebo dokument s XmlDictionaryReader deserializovaným objektem a vrátí deserializovaný objekt. Zkontroluje také, jestli data objektu odpovídají názvu a oboru názvů použitému k vytvoření serializátoru.

ReadObject(XmlReader)

Přečte datový proud XML nebo dokument s deserializovaným objektem XmlDictionaryReader a vrátí ho.

ReadObject(XmlReader, Boolean)

Načte datový proud XML nebo dokument s XmlDictionaryReader deserializovaným objektem a vrátí deserializovaný objekt. Zkontroluje také, jestli data objektu odpovídají názvu a oboru názvů použitému k vytvoření serializátoru.

Serialize(Stream, Object)

Serializuje zadaný objekt graf 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 závěrečný element XML pomocí XmlDictionaryWriter.

WriteEndObject(XmlWriter)

Zapíše závěrečný 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 Streamkódem .

(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 XmlDictionaryWriterkódem .

(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 .XmlWriter

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é