MySQL 데이터베이스에 BLOB로 저장된 여러 객체를 비 직렬화하는 동안 문제가 발생합니다.캐스팅에도 불구하고 잘못된 클래스 비 직렬화
각 객체 클래스에는 자체 deserialize 기능이 있습니다.
Class2 c2Holder = (Class2)binFormatter.Deserialize(memStream);
Class1 c1Holder = (Class1)binFormatter.Deserialize(memStream);
작품 좋은,하지만이 ... ... 클래스 1의 역 직렬화 함수를 호출합니다. VS 2010 디버거를 사용하여 단계별로 실행하면 두 번째 시도에서 올바른 기능을 호출합니다.
Class3 c3Holder = (Class3)binFormatter.Deserialize(memStream);
또한 은 ... 클래스 1의 직렬화 기능, 다음 Class2의 기능과 마지막으로 올바른 함수를 호출합니다.
아이디어가 있으십니까? 코멘트에서
Class2는 Class1에서 상속 받았으며 Class2는 Class2에서 상속합니까? –
binFormatter는 어디서 제공됩니까? –
그것은'BinaryFormatter'입니까? 'BinaryFormatter'를 사용하면 데이터 자체가 무엇을 구성하는지 정의합니다 (어셈블리 한정 형식 이름이 직렬화 된 데이터에 있음). 그래서 :'memStream'에 무엇이 있습니까? 데이터는 어디에서 왔습니까? 직렬화되었을 때 'Class1'이었습니까? –