C#を使用してデータをシリアライズする方法は何ですか?
C#でデータのシリアライズを行うための方法はいくつかありますが、最も一般的なのはBinaryFormatter、XmlSerializer、DataContractSerializerを使用することです。以下では、それぞれの方法の使い方を説明します。
- バイナリ形式のフォーマッタ
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
public class MyClass
{
public int Number { get; set; }
public string Text { get; set; }
}
public static void Main()
{
MyClass obj = new MyClass() { Number = 1, Text = "Hello, World!" };
// 序列化
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream fileStream = new FileStream("data.bin", FileMode.Create))
{
formatter.Serialize(fileStream, obj);
}
// 反序列化
using (FileStream fileStream = new FileStream("data.bin", FileMode.Open))
{
MyClass deserializedObj = (MyClass)formatter.Deserialize(fileStream);
Console.WriteLine($"Number: {deserializedObj.Number}, Text: {deserializedObj.Text}");
}
}
- XMLシリアライザ
using System;
using System.IO;
using System.Xml.Serialization;
[Serializable]
public class MyClass
{
public int Number { get; set; }
public string Text { get; set; }
}
public static void Main()
{
MyClass obj = new MyClass() { Number = 1, Text = "Hello, World!" };
// 序列化
XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
using (FileStream fileStream = new FileStream("data.xml", FileMode.Create))
{
serializer.Serialize(fileStream, obj);
}
// 反序列化
using (FileStream fileStream = new FileStream("data.xml", FileMode.Open))
{
MyClass deserializedObj = (MyClass)serializer.Deserialize(fileStream);
Console.WriteLine($"Number: {deserializedObj.Number}, Text: {deserializedObj.Text}");
}
}
- データコントラクトシリアライザ
using System;
using System.IO;
using System.Runtime.Serialization;
[DataContract]
public class MyClass
{
[DataMember]
public int Number { get; set; }
[DataMember]
public string Text { get; set; }
}
public static void Main()
{
MyClass obj = new MyClass() { Number = 1, Text = "Hello, World!" };
// 序列化
DataContractSerializer serializer = new DataContractSerializer(typeof(MyClass));
using (FileStream fileStream = new FileStream("data.xml", FileMode.Create))
{
serializer.WriteObject(fileStream, obj);
}
// 反序列化
using (FileStream fileStream = new FileStream("data.xml", FileMode.Open))
{
MyClass deserializedObj = (MyClass)serializer.ReadObject(fileStream);
Console.WriteLine($"Number: {deserializedObj.Number}, Text: {deserializedObj.Text}");
}
}
これらは一般的に使用される3つのC#データシリアル化方法です。 実際の要件に応じて適切な方法を選択してください。