2012-07-03 3 views
2

클래스가 직렬화되지 못하도록하는 것은 무엇입니까?클래스가 직렬화되지 못하도록하는 것은 무엇입니까?

직렬화를 활성화하면 오버 헤드가 발생하기 때문에 클래스가 기본적으로 직렬화되지 않는다는 것을 알고 있습니다. 그러나 일련 화되지 못하게하는 특정 클래스의 특성이 있습니까?

관련성이있는 경우 구체적으로 XML 직렬화에 대해 생각하고 있습니다.

+1

실제로 클래스를 'Serializable'로 표시하는 데 오버 헤드가 없습니다 (http://stackoverflow.com/questions/3731224/does-marking-objects-as-serializable-incur-overhead 참조). XML serialization의 경우 공용 속성에서 'XMLSerializer'가 작동하므로 속성을 사용할 필요조차 없으므로 오버 헤드가 훨씬 적습니다. 직렬화/직렬화 해제 프로세스를 제어하기 위해 속성을 추가 할 수도 있지만, 적은 양의 메타 데이터 공간을 차지하지만 실행 오버 헤드는 추가하지 않습니다. –

답변

7

직렬화 할 수없는 개체가 있습니다. 객체가 외부 리소스에 대한 핸들을 포함하는 경우에는 의미있는 방식으로 직렬화 할 수없는 경우가 많습니다.

예 :

  • 열기 TCP 연결.
  • 트랜잭션 개체.
  • 열린 파일 핸들.
+3

또한'ArrayList' 또는'List ', 속성으로'Type' 배열,'[Obsolete] '로 표시된 것,'ulong' 값> = 9223372036854775808 ...을 사용하는 열거 형 [http : // msdn. microsoft.com/en-us/library/system.xml.serialization.xml serializer) – user7116

관련 문제