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을 구현하자.
[출처] ITEM25# serializable 타입이 더 좋다.|작성자 롱박
'프로그래밍 > C#.net' 카테고리의 다른 글
ref 와 out (0) | 2009.08.24 |
---|---|
[effective C#]ITEM#26 IComparable 과 IComparer를 이용하여 순차관계를 구현하라. (0) | 2009.08.24 |
[effective C#] item #14: 연쇄적인 생성자를 호출하라. (0) | 2009.08.24 |
[effective C#] item #9: ReferenceEquals(),static() Equals(),instance Equals(),operator==의 상호 연관성을 이해하라. (0) | 2009.08.24 |
[effective C#] item #4 : #if 대신 Confitional Attribute를 사용하라. (0) | 2009.08.24 |
댓글