[c#] C#에서의 객체 그래프 직렬화
C#에서는 객체 그래프를 직렬화하여 데이터를 파일에 저장하거나 네트워크를 통해 전송할 수 있습니다. 객체 그래프란 서로 연결된 객체의 집합을 말하며, 이를 직렬화하고 역직렬화하여 원래 상태로 복원할 수 있습니다.
객체 그래프 직렬화란?
객체 그래프 직렬화(Object graph serialization)는 하나 이상의 객체와 그 객체들 간의 연결을 직렬화하는 과정을 말합니다. C#에서는 BinaryFormatter
나 DataContractSerializer
와 같은 클래스를 사용하여 객체 그래프를 직렬화할 수 있습니다.
BinaryFormatter를 사용한 객체 그래프 직렬화 예제
다음은 BinaryFormatter를 사용하여 C#에서 객체 그래프를 직렬화하는 간단한 예제입니다.
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
class Person
{
public string Name;
public Person Friend;
}
class Program
{
static void Main()
{
Person person1 = new Person { Name = "Alice" };
Person person2 = new Person { Name = "Bob" };
person1.Friend = person2;
person2.Friend = person1;
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream stream = new FileStream("person.dat", FileMode.Create))
{
formatter.Serialize(stream, person1);
}
}
}
위 예제에서 Person
클래스는 직렬화 가능하도록 [Serializable]
속성을 지정하고, BinaryFormatter
를 사용하여 객체 그래프를 person.dat
파일에 직렬화하는 방법을 보여줍니다.
역직렬화
이렇게 직렬화된 객체 그래프는 나중에 BinaryFormatter
를 사용하여 다시 역직렬화할 수 있습니다.
using (FileStream stream = new FileStream("person.dat", FileMode.Open))
{
Person deserializedPerson = (Person)formatter.Deserialize(stream);
Console.WriteLine(deserializedPerson.Name); // 출력: Alice
Console.WriteLine(deserializedPerson.Friend.Name); // 출력: Bob
}
결론
C#에서 객체 그래프를 직렬화하고 역직렬화하는 것은 데이터를 파일에 저장하거나 네트워크를 통해 전송할 때 유용합니다. 객체 그래프 직렬화를 사용하면 복잡한 구조의 데이터를 쉽게 저장하고 복원할 수 있습니다.
참고: