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