NetDataContractSerializer Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
- 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 |