예제를 통한 C#의 직렬화 및 역직렬화

C#의 직렬화 및 역직렬화

직렬화 및 역직렬화 개념은 개체와 관련된 데이터를 한 응용 프로그램에서 다른 응용 프로그램으로 보내야 할 때마다 사용됩니다. 직렬화는 애플리케이션 데이터를 파일로 내보내는 데 사용됩니다. 그런 다음 대상 애플리케이션은 역직렬화를 사용하여 추가 사용을 위해 애플리케이션에서 데이터를 추출합니다.

직렬화는 C# 클래스 개체가 파일에 기록되거나 직렬화되는 개념입니다. Tutorial이라는 C# 클래스가 있다고 가정해 보겠습니다. 그리고 클래스에는 ID와 Tutorials 이름이라는 두 가지 속성이 있습니다.

직렬화를 사용하면 Tutorial 클래스의 데이터 속성을 파일에 직접 쓸 수 있습니다. 역직렬화는 파일에서 데이터를 읽고 Tutorial 개체를 다시 구성하는 데 사용됩니다.

C#에서 개체를 직렬화하는 방법

이를 달성할 수 있는 방법의 예를 살펴보겠습니다.

이 예에서는 코드에서 아래의 상위 수준 단계를 수행하겠습니다.

  1. ID와 Name이라는 두 가지 속성이 있는 Tutorial이라는 클래스를 만듭니다.
  2. 그런 다음 클래스에서 객체를 생성하고 ID 속성에 "1" 값을 할당하고 name 속성에 ".Net" 값을 할당합니다.
  3. 그런 다음 직렬화를 사용하여 위 개체를 example.txt라는 파일로 직렬화합니다.
  4. 마지막으로 역직렬화를 사용하여 파일에서 개체를 역직렬화하고 콘솔에 값을 표시합니다.


콘솔 애플리케이션의 program.cs 파일에 아래 코드를 입력합니다.

단계 1) 수업을 추가합니다.

첫 번째 단계는 직렬화에 사용될 클래스를 추가하는 것입니다.

C#에서 개체 직렬화

코드 설명:-

  1. 직렬화해야 하는 클래스에는 [Serialize] 속성이 있어야 합니다. C#의 키워드입니다. 그런 다음 이 키워드가 Tutorial 클래스에 연결됩니다. 이 속성을 언급하지 않으면 클래스를 직렬화하려고 할 때 오류가 발생합니다.
  2. 다음은 직렬화할 클래스의 정의입니다. 여기서는 "Tutorial"이라는 클래스를 정의하고 2개의 속성을 제공합니다. 하나는 "ID"이고 다른 하나는 "Name"입니다.

단계 2) 객체를 생성합니다.

이 단계에서는 먼저 Tutorial 클래스의 객체를 생성하고 이를 example.txt라는 파일로 직렬화합니다.

C#에서 개체 직렬화

코드 설명:-

  1. 먼저 Tutorial 클래스의 객체를 만듭니다. 그런 다음 ID에 "1" 값을 할당하고 name 속성에 ".net" 값을 할당합니다.
  2. 그런 다음 개체를 직렬화하거나 이진 형식으로 변환하는 데 사용되는 포맷터 클래스를 사용합니다. 직렬화 시 파일의 데이터는 이진 형식으로 수행됩니다. 다음으로 파일 스트림 개체를 만듭니다. 파일 스트림 개체는 쓰기 목적으로 example.txt 파일을 여는 데 사용됩니다. FileMode.Create 및 FileMode.Write 키워드는 쓰기 목적으로 파일을 열어야 함을 구체적으로 언급하는 데 사용됩니다.
  3. 마지막으로 Serialize 메서드를 사용하여 이진 데이터를 파일로 전송합니다. 그런 다음 쓰기 이후 스트림을 닫습니다. 조작 완료되었습니다.

단계 3) 역직렬화를 사용합니다.

마지막으로 데이터가 파일에 있는지 확인하기 위해 역직렬화를 사용하여 파일에서 개체를 역직렬화합니다.

C#에서 개체 직렬화

using System;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  [Serializable]
  class Tutorial
  {
  public int ID;
  public String Name;
   static void Main(string[] args)
   {
    Tutorial obj = new Tutorial();
    obj.ID = 1;
    obj.Name = ".Net";

    IFormatter formatter = new BinaryFormatter();
    Stream stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Create,FileAccess.Write);

    formatter.Serialize(stream, obj);
    stream.Close();

    stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Open,FileAccess.Read);
    Tutorial objnew = (Tutorial)formatter.Deserialize(stream);

    Console.WriteLine(objnew.ID);
    Console.WriteLine(objnew.Name);

    Console.ReadKey();
  }
 }
}

코드 설명:-

  1. 우리는 "라는 객체를 생성합니다.흐름”을 클릭하여 읽기 전용 모드로 example.txt 파일을 엽니다.
  2. 그런 다음 개체를 역직렬화하는 데 사용되는 포맷터 클래스를 사용합니다. 이 클래스는 example.txt 파일에 저장되어 있습니다. 반환된 개체는 objnew 개체로 설정됩니다.
  3. 마지막으로 "ID" 및 "name" 속성을 사용하여 "objnew" 개체의 속성을 콘솔에 표시합니다.

위의 코드가 설정되고 프로젝트가 다음을 사용하여 실행되면 비주얼 스튜디오, 아래 출력을 얻게 됩니다.

산출:-

C#에서 개체 직렬화

위의 출력에서 ​​파일의 값이 올바르게 역직렬화되어 콘솔에 표시되었음을 확인할 수 있습니다.

요약

직렬화는 클래스 객체를 파일에 쓰는 데 사용됩니다.

De-Serialization은 파일에서 개체를 복구하는 데 사용됩니다.