2009-06-10 2 views
0

공개 선언은 클래스를 직렬화 할 수있는 요구 사항입니까? 나는 모든 클래스가 [Serializable]으로 표시된 코드를 공개적으로 선언했다. 나는 이것을 진술하는 공식 문서를 찾을 수 없었다..NET : 공용 선언이 클래스를 직렬화 할 수있는 요구 사항입니까?

+0

나는 대부분의 수업은 어쨌든 공개라고 생각합니다. –

+0

반드시 그렇지는 않습니다. Daniel, 솔루션의 계획과 디자인에 분명히 달려 있습니다. –

답변

3

아니요, Serializable에 대한 요구 사항은 없습니다. 스트림에 유지 될 데이터가 다른 사람들과 공유 될 가능성이 높으므로 공개 클래스의 선택을 유도하기 때문에 공개 클래스에 Serializable이 표시되는 것은 놀라운 일이 아닙니다.

0

잘 모르겠습니다. 그러나 개인 중첩 클래스는 어떻습니까?

(public) 외부 클래스가 serialize 가능한 경우에는 내부 클래스도 serialize하는 것이 좋습니다. 항상

0

하지 사실, 아마 다른 개체의 상태를 나타내고 직렬화 내부 클래스가 객체를 가지고, 그것은 너무

0

직렬화에 따라 다름 매우 유효합니다. AFAIK, 바이너리 직렬화 (즉, - [Serializable])는 공개 멤버 액세스를 필요로하지 않으며 클래스의 메모리 내 스냅 샷을 가져 오는 몇 가지 부두를 수행합니다.

XmlSerialization (및 JsonSerialization 등)은 일반적으로 매개 변수없는 기본 생성자를 사용하여 클래스를 public으로 설정하고 모든 공용 속성이나 필드를 자동으로 serialize합니다.

관련 문제