본문 바로가기
프로그래밍/C#.net

[effective C#]ITEM25# serializable 타입이 더 좋다.

by 건우아빠유리남편 2009. 8. 24.
반응형

ITEM25# serializable 타입이 더 좋다.
우리가 만드는 타입 중에 UI전용컨트롤,윈도우 혹은 폼을 가지는 타입을 제외한 모든 타입은 반드시 serialzation기능을 제공해야 한다.

[Serializable]
public class MyType
{
 private string _label;
 private int _value;
}

MyType의 멤버인 string,int 타입은 기본적으로 serialization을 지원하는 타입이기 때문에 Serialization attribute를 추가하는 것만으로 MyType은 serialzation이 가능한 타입이 된다.

-닷넷 Serialization은 객체 내의 모든 멤버변수를 출력 스트립으로 내보낼 수 있다.
-닷넷 프레임워크는 Serialization 구현부는 객체가 deserialize될 때 객체간의 복잡한 참조관계를 재구성한다.

Serialization을 원하지 않는 멤버에 대해서는 NonSerialized attribute를 사용하여 특정 멤버를 serialize과정에서 배제시킬 수 있다.

[Serializable]
public class MyType
{
 private string _label;
 private int _value;
 
 [NonSerialized]
 private int _cachedValue;

}

serialize된 데이터는 프로그램의 버전이 변경되더라도 계속 사용될 수 있어야 한다.
만일 우리가 여러 개의 버전에서도 수행될 수 있는 serialize 가능한 타입을 구성하려 하는 경우라면, serialization 처리를 위해서 ISerializable interface를 구현하여 좀 더 세밀한 제어를 수행해야 한다.

가능한 다른 사용자들이 쉽게 serialzation을 구현할 수 있도록 모든 타입을 serilization이 가능하도록 만들고, 기본적으로 제공되는 기능을 이요하되 기본기능이 충분하지 않은 경우에는 ISerialization을 구현하자.


반응형

댓글