NetDataContractSerializer Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Serializza e deserializza un'istanza di un tipo in un flusso o un documento XML utilizzando i tipi di .NET forniti. La classe non può essere ereditata.
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
- Ereditarietà
- Implementazioni
Esempio
Il codice di esempio seguente mostra un tipo denominato Person serializzato da NetDataContractSerializer. L'attributo DataContractAttribute viene applicato alla classe e viene DataMemberAttribute applicato ai membri (incluso un membro privato) per indicare a NetDataContractSerializer cosa serializzare.
// 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
Commenti
Sicurezza
NetDataContractSerializer non è sicuro. Per altre informazioni, vedere la guida alla sicurezza BinaryFormatter.
L'oggetto NetDataContractSerializerDataContractSerializer differisce da in un modo importante: NetDataContractSerializer include informazioni sul tipo CLR nel codice XML serializzato, mentre non .DataContractSerializer Pertanto, NetDataContractSerializer può essere utilizzato solo se le estremità di serializzazione e deserializzazione condividono gli stessi tipi CLR.
Il serializzatore può serializzare i tipi a cui è stato applicato l'attributo DataContractAttribute o SerializableAttribute . Serializza anche i tipi che implementano ISerializable.
Per altre informazioni sulla serializzazione, vedere Serializzazione e Deserializzazione.
Incompatibilità con XElement
La XElement classe viene utilizzata per scrivere codice XML. Tuttavia, non può serializzare un'istanza NetDataContractSerializer del tipo. Il codice seguente, pertanto, ha esito negativo con l'eccezione: "Il tipo radice 'System.Xml.Linq.XElement' non è supportato al livello superiore da NetDataContractSerializer poiché è IXmlSerializable con IsAny=true e deve scrivere tutto il contenuto incluso l'elemento radice".
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)
Tuttavia, se un XElement oggetto viene utilizzato come tipo di un campo o di una proprietà di una classe, i dati contenuti nel campo o nella proprietà vengono serializzati. Ciò è dovuto al fatto che, come membro di una classe, i dati non sono il livello principale della classe.
Costruttori
| Nome | Descrizione |
|---|---|
| NetDataContractSerializer() |
Inizializza una nuova istanza della classe NetDataContractSerializer. |
| NetDataContractSerializer(StreamingContext, Int32, Boolean, FormatterAssemblyStyle, ISurrogateSelector) |
Inizializza una nuova istanza della NetDataContractSerializer classe con i dati di contesto forniti. Specifica inoltre il numero massimo di elementi nell'oggetto da serializzare e i parametri per specificare se i dati aggiuntivi vengono ignorati, il metodo di caricamento dell'assembly e un selettore surrogato. |
| NetDataContractSerializer(StreamingContext) |
Inizializza una nuova istanza della NetDataContractSerializer classe con i dati del contesto di streaming forniti. |
| NetDataContractSerializer(String, String, StreamingContext, Int32, Boolean, FormatterAssemblyStyle, ISurrogateSelector) |
Inizializza una nuova istanza della NetDataContractSerializer classe con i dati di contesto forniti e il nome radice e lo spazio dei nomi. Specifica inoltre il numero massimo di elementi nell'oggetto da serializzare e i parametri per specificare se i dati aggiuntivi vengono ignorati, il metodo di caricamento dell'assembly e un selettore surrogato. |
| NetDataContractSerializer(String, String) |
Inizializza una nuova istanza della NetDataContractSerializer classe con l'elemento radice e lo spazio dei nomi XML forniti. |
| NetDataContractSerializer(XmlDictionaryString, XmlDictionaryString, StreamingContext, Int32, Boolean, FormatterAssemblyStyle, ISurrogateSelector) |
Inizializza una nuova istanza della NetDataContractSerializer classe con i dati di contesto forniti e il nome radice e lo spazio dei nomi (come XmlDictionaryString parametri); specifica inoltre il numero massimo di elementi nell'oggetto da serializzare e i parametri per specificare se i dati aggiuntivi trovati vengono ignorati, il metodo di caricamento dell'assembly e un selettore surrogato. |
| NetDataContractSerializer(XmlDictionaryString, XmlDictionaryString) |
Inizializza una nuova istanza della NetDataContractSerializer classe con due parametri di tipo XmlDictionaryString che contengono l'elemento radice e lo spazio dei nomi usati per specificare il contenuto. |
Proprietà
| Nome | Descrizione |
|---|---|
| AssemblyFormat |
Ottiene un valore che specifica un metodo per l'individuazione e il caricamento di assembly. |
| Binder |
Ottiene o imposta un oggetto che controlla il caricamento delle classi. |
| Context |
Ottiene o imposta l'oggetto che consente il passaggio di dati di contesto utili durante la serializzazione o la deserializzazione. |
| IgnoreExtensionDataObject |
Ottiene un valore che specifica se i dati forniti da un'estensione dell'oggetto vengono ignorati. |
| MaxItemsInObjectGraph |
Ottiene il numero massimo di elementi consentiti nell'oggetto da serializzare. |
| SurrogateSelector |
Ottiene o imposta un oggetto che assiste il formattatore quando si seleziona un surrogato per la serializzazione. |
Metodi
| Nome | Descrizione |
|---|---|
| Deserialize(Stream) |
Deserializza un documento XML o un flusso in un oggetto . |
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| IsStartObject(XmlDictionaryReader) |
Determina se l'oggetto XmlDictionaryReader è posizionato su un oggetto che può essere deserializzato utilizzando il lettore specificato. |
| IsStartObject(XmlReader) |
Determina se l'oggetto XmlReader è posizionato su un oggetto che può essere deserializzato utilizzando il lettore specificato. |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| ReadObject(Stream) |
Legge il flusso o il documento XML con un Stream oggetto e restituisce l'oggetto deserializzato. (Ereditato da XmlObjectSerializer) |
| ReadObject(XmlDictionaryReader, Boolean) |
Legge il flusso o il documento XML con un XmlDictionaryReader oggetto e restituisce l'oggetto deserializzato. Controlla inoltre se i dati dell'oggetto sono conformi al nome e allo spazio dei nomi utilizzati per creare il serializzatore. |
| ReadObject(XmlDictionaryReader) |
Legge il documento o il flusso XML con un XmlDictionaryReader oggetto e restituisce l'oggetto deserializzato. (Ereditato da XmlObjectSerializer) |
| ReadObject(XmlReader, Boolean) |
Legge il flusso o il documento XML con un XmlDictionaryReader oggetto e restituisce l'oggetto deserializzato. Controlla inoltre se i dati dell'oggetto sono conformi al nome e allo spazio dei nomi utilizzati per creare il serializzatore. |
| ReadObject(XmlReader) |
Legge il flusso XML o il documento con un XmlDictionaryReader oggetto e restituisce l'oggetto deserializzato. |
| Serialize(Stream, Object) |
Serializza l'oggetto grafico specificato utilizzando il writer specificato. |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
| WriteEndObject(XmlDictionaryWriter) |
Scrive l'elemento XML di chiusura utilizzando un oggetto XmlDictionaryWriter. |
| WriteEndObject(XmlWriter) |
Scrive l'elemento XML di chiusura utilizzando un oggetto XmlWriter. |
| WriteObject(Stream, Object) |
Scrive il contenuto completo (inizio, contenuto e fine) dell'oggetto nel documento XML o nel flusso con l'oggetto specificato Stream. (Ereditato da XmlObjectSerializer) |
| WriteObject(XmlDictionaryWriter, Object) |
Scrive il contenuto completo (inizio, contenuto e fine) dell'oggetto nel documento XML o nel flusso con l'oggetto specificato XmlDictionaryWriter. (Ereditato da XmlObjectSerializer) |
| WriteObject(XmlWriter, Object) |
Scrive il contenuto completo (inizio, contenuto e fine) dell'oggetto nel documento XML o nel flusso con l'oggetto specificato XmlWriter. |
| WriteObjectContent(XmlDictionaryWriter, Object) |
Scrive il contenuto XML utilizzando un oggetto XmlDictionaryWriter. |
| WriteObjectContent(XmlWriter, Object) |
Scrive il contenuto XML utilizzando un oggetto XmlWriter. |
| WriteStartObject(XmlDictionaryWriter, Object) |
Scrive l'elemento XML di apertura utilizzando un oggetto XmlDictionaryWriter. |
| WriteStartObject(XmlWriter, Object) |
Scrive l'elemento XML di apertura utilizzando un oggetto XmlWriter. |