NetDataContractSerializer クラス

定義

指定された .NET Framework 型を使用して、型のインスタンスを XML ストリームまたはドキュメントにシリアル化および逆シリアル化します。 このクラスは継承できません。

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
継承
NetDataContractSerializer
実装

次のコード例は、NetDataContractSerializerによってシリアル化される Person という名前の型を示しています。 DataContractAttribute 属性がクラスに適用され、DataMemberAttribute がメンバー (プライベート メンバーを含む) に適用され、シリアル化する内容を NetDataContractSerializer に指示します。

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

注釈

安全

NetDataContractSerializer は安全ではありません。 詳細については、BinaryFormatter セキュリティ ガイドを参照してください。

NetDataContractSerializer は、DataContractSerializer とは 1 つの重要な点で異なります。NetDataContractSerializer にはシリアル化された XML に CLR 型情報が含まれますが、DataContractSerializer には含まれません。 したがって、NetDataContractSerializer は、シリアル化と逆シリアル化の両方の終了が同じ CLR 型を共有する場合にのみ使用できます。

シリアライザーは、DataContractAttribute または SerializableAttribute 属性が適用されている型をシリアル化できます。 また、ISerializableを実装する型もシリアル化します。

シリアル化の詳細については、「シリアル化と逆シリアル化の」を参照してください。

XElement との非互換性

XElement クラスは XML の記述に使用されます。 ただし、NetDataContractSerializer は型のインスタンスをシリアル化できません。 したがって、次のコードは例外で失敗します。"ルート型 'System.Xml.Linq.XElement' は、netDataContractSerializer では最上位レベルではサポートされていません。これは、IsAny=true で IXmlSerializable であり、ルート要素を含むすべての内容を書き込む必要があるためです。"

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)

ただし、XElement がクラスのフィールドまたはプロパティの型として使用される場合、フィールドまたはプロパティに含まれるデータはシリアル化されます。 これは、クラスのメンバーとして、データがクラスの最上位レベルではないためです。

コンストラクター

NetDataContractSerializer()

NetDataContractSerializer クラスの新しいインスタンスを初期化します。

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

指定されたコンテキスト データを使用して、NetDataContractSerializer クラスの新しいインスタンスを初期化します。さらに、シリアル化するオブジェクト内の項目の最大数と、余分なデータを無視するかどうかを指定するパラメーター、アセンブリ読み込みメソッド、およびサロゲート セレクターを指定します。

NetDataContractSerializer(StreamingContext)

指定されたストリーミング コンテキスト データを使用して、NetDataContractSerializer クラスの新しいインスタンスを初期化します。

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

指定されたコンテキスト データとルート名と名前空間を使用して、NetDataContractSerializer クラスの新しいインスタンスを初期化します。さらに、シリアル化するオブジェクト内の項目の最大数と、余分なデータを無視するかどうかを指定するパラメーター、アセンブリ読み込みメソッド、およびサロゲート セレクターを指定します。

NetDataContractSerializer(String, String)

指定された XML ルート要素と名前空間を使用して、NetDataContractSerializer クラスの新しいインスタンスを初期化します。

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

指定されたコンテキスト データ、およびルート名と名前空間 (XmlDictionaryString パラメーター) を使用して、NetDataContractSerializer クラスの新しいインスタンスを初期化します。さらに、シリアル化するオブジェクト内の項目の最大数と、見つかった追加データを無視するかどうかを指定するパラメーター、アセンブリ読み込みメソッド、およびサロゲート セレクターを指定します。

NetDataContractSerializer(XmlDictionaryString, XmlDictionaryString)

コンテンツの指定に使用するルート要素と名前空間を含む XmlDictionaryString 型の 2 つのパラメーターを使用して、NetDataContractSerializer クラスの新しいインスタンスを初期化します。

プロパティ

AssemblyFormat

アセンブリを検索して読み込むためのメソッドを指定する値を取得します。

Binder

クラスの読み込みを制御するオブジェクトを取得または設定します。

Context

シリアル化または逆シリアル化中に便利なコンテキスト データを渡すことができるオブジェクトを取得または設定します。

IgnoreExtensionDataObject

オブジェクトの拡張によって提供されるデータを無視するかどうかを指定する値を取得します。

MaxItemsInObjectGraph

シリアル化するオブジェクトで許可される項目の最大数を取得します。

SurrogateSelector

シリアル化のサロゲートを選択するときにフォーマッタを支援するオブジェクトを取得または設定します。

メソッド

Deserialize(Stream)

XML ドキュメントまたはストリームをオブジェクトに逆シリアル化します。

Equals(Object)

指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
IsStartObject(XmlDictionaryReader)

指定したリーダーを使用して逆シリアル化できるオブジェクトに XmlDictionaryReader を配置するかどうかを決定します。

IsStartObject(XmlReader)

指定したリーダーを使用して逆シリアル化できるオブジェクトに XmlReader を配置するかどうかを決定します。

MemberwiseClone()

現在の Objectの簡易コピーを作成します。

(継承元 Object)
ReadObject(Stream)

Stream を使用して XML ストリームまたはドキュメントを読み取り、逆シリアル化されたオブジェクトを返します。

(継承元 XmlObjectSerializer)
ReadObject(XmlDictionaryReader, Boolean)

XmlDictionaryReader を使用して XML ストリームまたはドキュメントを読み取り、逆シリアル化されたオブジェクトを返します。また、オブジェクト データがシリアライザーの作成に使用される名前と名前空間に準拠しているかどうかを確認します。

ReadObject(XmlDictionaryReader)

XmlDictionaryReader を使用して XML ドキュメントまたはストリームを読み取り、逆シリアル化されたオブジェクトを返します。

(継承元 XmlObjectSerializer)
ReadObject(XmlReader, Boolean)

XmlDictionaryReader を使用して XML ストリームまたはドキュメントを読み取り、逆シリアル化されたオブジェクトを返します。また、オブジェクト データがシリアライザーの作成に使用される名前と名前空間に準拠しているかどうかを確認します。

ReadObject(XmlReader)

XmlDictionaryReader を使用して XML ストリームまたはドキュメントを読み取り、逆シリアル化されたオブジェクトを返します。

Serialize(Stream, Object)

指定したライターを使用して、指定したオブジェクト グラフをシリアル化します。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)
WriteEndObject(XmlDictionaryWriter)

XmlDictionaryWriterを使用して終了 XML 要素を書き込みます。

WriteEndObject(XmlWriter)

XmlWriterを使用して終了 XML 要素を書き込みます。

WriteObject(Stream, Object)

指定した Streamを使用して、オブジェクトの完全なコンテンツ (開始、コンテンツ、終了) を XML ドキュメントまたはストリームに書き込みます。

(継承元 XmlObjectSerializer)
WriteObject(XmlDictionaryWriter, Object)

指定した XmlDictionaryWriterを使用して、オブジェクトの完全なコンテンツ (開始、コンテンツ、終了) を XML ドキュメントまたはストリームに書き込みます。

(継承元 XmlObjectSerializer)
WriteObject(XmlWriter, Object)

指定した XmlWriterを使用して、オブジェクトの完全なコンテンツ (開始、コンテンツ、終了) を XML ドキュメントまたはストリームに書き込みます。

WriteObjectContent(XmlDictionaryWriter, Object)

XmlDictionaryWriterを使用して XML コンテンツを書き込みます。

WriteObjectContent(XmlWriter, Object)

XmlWriterを使用して XML コンテンツを書き込みます。

WriteStartObject(XmlDictionaryWriter, Object)

XmlDictionaryWriterを使用して開始 XML 要素を書き込みます。

WriteStartObject(XmlWriter, Object)

XmlWriterを使用して開始 XML 要素を書き込みます。

適用対象

こちらもご覧ください