반응형

C# 직렬화 3

[C#] 12. 직렬화와 리플렉션 - 사용자 지정 직렬화

12.1.2 사용자 지정 직렬화 C#에서는 직렬화할 때 메터데이터 부분을 개발자가 정한 이름으로 직렬화할 수 있게 사용자 지정 직렬화를 제공합니다. 사용자 지정 직렬화하려면 ISerializable 인터페이스를 기반으로 정의해야 합니다. [Serializable] class Man:ISerializable 그리고 ISerializable에 기능 약속한 GetObjectData 메서드를 정의합니다. public void GetObjectData(SerializationInfo info, StreamingContext context) { 직렬화할 대상을 SerializationInfo 개체의 AddValue 메서드를 이용하여 원하는 이름으로 값을 추가합니다. info.AddValue("이름", Name); ..

[C#] 12. 직렬화와 리플렉션 - 선별적 직렬화

12.1.1 선별적 직렬화 C#에서는 형식 내부의 멤버 필드 중에서 직렬화와 역직렬화에 포함하지 않게 선별적 직렬화를 제공합니다. 선별적 직렬화는 멤버 필드에만 적용할 수 있는데 직렬화 대상에서 빼고 싶은 멤버 위에 NonSerialized 어튜리뷰트를 지정합니다. 예를 들어 사용자가 로그인하여 게임을 진행할 때 공부한 시간이 5이면 아이큐를 증가한다고 가정합시다. 만약 사용자가 로그아웃하면 공부한 시간은 사라지고 다시 로그인 하면 다시 0부터 시작하게 합시다. 직렬화와 역직렬화를 이용한다면 공부한 시간을 직렬화 대상에서 배제합니다. [Serializable] class Unit { [NonSerialized] int scnt;//공부한 횟수 internal string Name { get; privat..

[C#] 12. 직렬화 및 리플렉션 - 직렬화

12. 직렬화 및 리플렉션 직렬화란 프로세스의 개체 정보를 선형적(연속적인 선의 형태)으로 다른 매체에 기록 혹은 전송하는 것을 말합니다. 그리고 다른 매체의 정보를 읽어나 수신하여 프로세스의 개체를 만드는 것을 역직렬화라 부릅니다. 이번 장에서는 C#에서 제공하는 직렬화와 역직렬화를 사용하여 파일 입출력하는 예를 살펴볼게요. 그리고 리플렉션은 형식 정보를 이용하여 개체를 생성하거나 메서드 등을 사용하는 것을 말합니다. 특히 프로그램 동작 중에 명시적으로 라이브러리를 로딩하여 사용할 때 리플렉션을 사용합니다. 12.1 직렬화 C#에서는 ISerializable 어튜리뷰트를 제공하고 있으며 이를 사용하면 별다른 작업없이 직렬화할 수 있습니다. 직렬화하려면 어느 개체 정보를 직렬화할 것인지 어느 매체에 직렬..

반응형