次の方法で共有


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
実装

次のコード例は、Person によってシリアル化される NetDataContractSerializer という名前の型を示しています。 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 は、1 つの重要な点で DataContractSerializer とは異なります。NetDataContractSerializer はシリアル化された XML の中に CLR 型情報を含みますが、DataContractSerializer にはこの情報は含まれません。 したがって、NetDataContractSerializer は、シリアル化と逆シリアル化の両方で、同一の CLR 型を共有する結果になる場合のみ使用できます。

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

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

XElement との互換性がない

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

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)

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

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

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

NetDataContractSerializer(String, String)

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

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

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

NetDataContractSerializer(XmlDictionaryString, XmlDictionaryString)

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

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

コンテキスト データ、ルート名、名前空間 (XmlDictionaryString パラメーターとして指定)、シリアル化されるオブジェクト内の項目の最大数、追加データを無視するかどうかを指定するパラメーター、アセンブリを読み込むメソッドを指定するパラメーター、サロゲート セレクターを指定するパラメーターを使用して、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)

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

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

XmlDictionaryReader を使用して XML ストリームまたはドキュメントを読み取ります。オブジェクトのデータが、シリアライザーを作成するために使用された名前および名前空間と一致するかどうかもチェックされます。

ReadObject(XmlReader)

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

ReadObject(XmlReader, Boolean)

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 の開始要素を書き込みます。

適用対象

こちらもご覧ください