C#でオブジェクトのシリアル化と逆シリアル化を実現する方法は何ですか?
C#では、オブジェクトのシリアライズとデシリアライズは、System.Runtime.Serialization名前空間のDataContractSerializerクラスを使用することで実現できます。
オブジェクトのシリアライズのサンプルコード:
using System;
using System.IO;
using System.Runtime.Serialization;
[DataContract]
public class Person
{
[DataMember]
public string Name { get; set; }
[DataMember]
public int Age { get; set; }
}
class Program
{
static void Main()
{
Person person = new Person { Name = "Alice", Age = 30 };
DataContractSerializer serializer = new DataContractSerializer(typeof(Person));
using (FileStream stream = new FileStream("person.xml", FileMode.Create))
{
serializer.WriteObject(stream, person);
}
}
}
オブジェクトの逆シリアル化例:
using System;
using System.IO;
using System.Runtime.Serialization;
class Program
{
static void Main()
{
DataContractSerializer serializer = new DataContractSerializer(typeof(Person));
using (FileStream stream = new FileStream("person.xml", FileMode.Open))
{
Person person = (Person)serializer.ReadObject(stream);
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
}
}
Personクラスは、DataContractおよびDataMember属性を使用して、シリアライズする必要のあるプロパティをマークし、それをDataContractSerializerクラスを使用してオブジェクトをXMLファイルにシリアライズしたり、XMLファイルからオブジェクトに逆シリアライズする。