2017-01-30 12 views
2

나는 다음과 같이 클래스가 정의되어 : 나는 경우 BinaryFormatter를 가진 파일로 직렬화 한새 속성을 추가 한 후 BinaryFormatter가 예외를 throw하지 않는 이유는 무엇입니까?

[Serializable] 
class C 
{ 
    String str { get; set; } 
    int num { get; set; } 
} 

. 다음과 같이 클래스를 변경했습니다.

[Serializable] 
class C 
{ 
    String str { get; set; } 
    int num { get; set; } 
    int num2 { get; set; } 
} 

그러나 예외를 발생시키는 대신 비 직렬화시 포맷터는 num2를 0으로 설정합니다. 그것을 던지기위한 방법이 있습니까?

+0

[버전 허용 직렬화] (https://msdn.microsoft.com/en-us/library/ms229752(v=vs.110).aspx)를 참조하십시오. 귀하의 질문은 새로운 반원들을 무시하고 * 반대하지 말고 원하는대로 흥미 롭습니다. btw. deserialization은'num2'를 설정하지 않고 초기 값인 0 만 유지합니다. – dlatikay

답변

0

확인. 나는 내가 설정할 수있는 행동을 바꾸기 위해 그것을 알아 냈다.

formatter.AssemblyFormat = FormatterAssemblyStyle.Full; 

그것은 아마도 과잉 일 것이다.