프로그래밍 노트

C#에서 SOAP 방식 직렬화(Serialization) 예제 소스 본문

C#/기초

C#에서 SOAP 방식 직렬화(Serialization) 예제 소스

떡잎 2012. 12. 12. 18:32

이 글에는 왜 직렬화를 하는지는 언급하지 않는다.

SOAP방식으로 직렬화를 하면 파일이 자동으로  XML 태그가 붙어 저장된다.

using System;
using System.IO;                // 파일 처리
using System.Collections;       // ArrayList 사용
// 참조에서 추가 필요
using System.Runtime.Serialization.Formatters.Soap;

namespace serializationSoap
{
    class Program
    {
        static void Main(string[] args)
        {
            ArrayList LunchMenu = new ArrayList();

            LunchMenu.Add("김치찌게");
            LunchMenu.Add("된장찌게");
            LunchMenu.Add("냉면");

            // 직렬화 전 데이터 출력하기
            for (int i = 0; i < LunchMenu.Count; i++)
            {
                Console.WriteLine(LunchMenu[i]);
            }
            Console.WriteLine();


            // 파일 만들기
            //     FileStream은 바이트로 처리한다.
            FileStream StreamOut = new FileStream("test.xml", FileMode.Create);
            // SOAP 직렬화 Fomatter
            SoapFormatter SoapOut = new SoapFormatter();

            Console.WriteLine("Serializing...");
            // 직렬화 serializing
            SoapOut.Serialize(StreamOut, LunchMenu);
            StreamOut.Close();

            //============================================================

            FileStream StreamIn = new FileStream("test.xml", FileMode.Open);
            SoapFormatter SoapIn = new SoapFormatter();

            Console.WriteLine("Deserializing...");

            // 역직렬화 Deserializing
            ArrayList GetLunchMenu = (ArrayList)SoapIn.Deserialize(StreamIn);
            StreamIn.Close();

            // 역직렬화된 데이터 출력하기
            for (int i = 0; i < GetLunchMenu.Count; i++)
            {
                Console.WriteLine(GetLunchMenu[i]);
            }
            Console.ReadLine();
        }
    }
}



커맨트 내용을 보면 특별히 문제가 없겠지만
using System.Runtime.Serialization.Formatters.Soap;

위 소스에서 참조에서 직접 using System.Runtime.Serialization.Formatters.Soap; 을 추가해 주어야한다.


참조하는 방법은 아래와 같다.

아래 그림을 보면 System.Runtime.Serialization.Formatters.Soap;가 참조되지 않아 Soap의 붉은 줄의 쳐져있다.


먼저 솔루션 탐색기의 참조에서 오른쪽 클릭을 눌러 참조 추가를 선택한다.


.NET 탬에서 System.Runtime.Serialization.Formatters.Soap를 찾아 확인을 눌러준다.

그러면 아래와같이 System.Runtime.Serialization.Formatters.Soap가 참조에 추가되고 Soap의 붉은 줄도 사라진다.







Comments