게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[C#] 직렬화 바이너리 파일 역직렬화에서 질문 드립니다..
게시물ID : programmer_19435짧은주소 복사하기
작성자 : 여우느님
추천 : 0
조회수 : 574회
댓글수 : 2개
등록시간 : 2016/12/29 00:57:01
옵션
  • 본인삭제금지
유니티에서 플레이어 데이터를 저장하기 위해 여러 방법을 찾아보고 있던 중
직렬화(Serializable)를 통한 바이너리를 저장 한 후 역직렬화 하는 방법이 있어서
확인 작업 중 의문이 생겨 질문 글 올립니다.
테스트를 위해 솔루션 2개를 활용하려 합니다.

[Serializable]

    public class MySerialObject

    {

        public int Int1 = 0;

        public int Int2 = 0;

        public int Int3 = 0;

        private string str = null;

 

        public string STR

        {

            get

            {

                return str;

            }

 

            set

            {

                str = value;

            }

        }

 

        public void DisplayMember(string Header)

        {

            Console.WriteLine("** " + Header + " **");

            Console.WriteLine("Member 1  ==> " + Int1.ToString());

            Console.WriteLine("Member 2  ==> " + Int2.ToString());

            Console.WriteLine("Member 3  ==> " + Int3.ToString());

            Console.WriteLine("Member 4  ==> " + STR);

            Console.WriteLine("");

        }

    }

//직렬화를 하기 위한 테스트용 클래스 입니다.


//직렬화 후 바이너리 파일로 저장하는 메인 솔루션입니다.

class Program

    {

        static void Main(string[] args)

        {

            MySerialObject obj = new MySerialObject();

            obj.Int1 = 1;

            obj.Int2 = 655;

            obj.Int3 = 100;

            obj.STR = "my class";

 

            obj.DisplayMember("원래 객체 입니다.");

 

            IFormatter formatter = new BinaryFormatter();

            Stream streamWrite = new FileStream("MyFile.bin", FileMode.Create, FileAccess.Write, FileShare.None);

 

            formatter.Serialize(streamWrite, obj);

            streamWrite.Close();

        }

    }

해당 메인을 통해서 MyFile.bin 이라는 바이너리 파일 생성 후, 다른 솔루션으로 파일 이동 후 역직렬화를 하려 했으나


namespace BinaryLoad

{

    [Serializable]

    public class MySerialObject

    {

        public int Int1 = 0;

        public int Int2 = 0;

        public int Int3 = 0;

        private string str = null;

 

        public string STR

        {

            get

            {

                return str;

            }

 

            set

            {

                str = value;

            }

        }

 

        public void DisplayMember(string Header)

        {

            Console.WriteLine("** " + Header + " **");

            Console.WriteLine("Member 1  ==> " + Int1.ToString());

            Console.WriteLine("Member 2  ==> " + Int2.ToString());

            Console.WriteLine("Member 3  ==> " + Int3.ToString());

            Console.WriteLine("Member 4  ==> " + STR);

            Console.WriteLine("");

        }

    }

    class Program

    {

        static void Main(string[] args)

        {

            IFormatter formatter = new BinaryFormatter();

 

            Stream streamRead = new FileStream("MyFile.bin", FileMode.Open, FileAccess.Read, FileShare.None);

 

            MySerialObject deSerialObj = (MySerialObject)formatter.Deserialize(streamRead);

            streamRead.Close();

 

 

 

            //deSerialObj.DisplayMember("역직렬화 바이너리 생성 객체");

 

 

        }

    }

}

위와 같이 역직렬화를 시도했지만, 파일은 읽어들일 수 있으나, 객체를 생성할 수가 없더군요.

하지만 한 솔루션에서 저장 및 불러오기 과정은 성공적으로 되었습니다.


이 두 가지에서 차이점을 알고 싶습니다.


꼬릿말 보기
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호