UINT GetObjectSchema ( );
ส่งกลับค่า
ระหว่าง deserialization รุ่นของวัตถุกำลังอ่าน?
หมายเหตุ
เรียกฟังก์ชันนี้จากฟังก์ชันSerializeเพื่อตรวจสอบรุ่นของวัตถุที่มีอยู่ในขณะนี้กำลัง deserialized การเรียกฟังก์ชันนี้จะใช้ได้เฉพาะเมื่อวัตถุCArchiveกำลังโหลด (CArchive::IsLoadingกลับไม่ใช่ศูนย์) มันควรเป็นสายแรกในฟังก์ชันSerializeและเรียกว่าเพียงครั้งเดียว ค่าที่ส่งกลับของ 1 (UINT) บ่งชี้ว่า หมายเลขเวอร์ชันที่ไม่รู้จัก)?
การCObject-ชั้นที่ได้รับอาจใช้VERSIONABLE_SCHEMAรวม (ใช้ระดับบิตหรือ) กับรุ่น schema ตัวเอง (ในแมโคIMPLEMENT_SERIAL ) เพื่อสร้าง "versionable วัตถุ นั่นคือ วัตถุSerialize member function สามารถอ่านหลายรุ่น กรอบการทำงานเริ่มต้น (โดยVERSIONABLE_SCHEMA) คือการ โยนข้อยกเว้นเมื่อมีรุ่นไม่ตรง?
ตัวอย่าง
IMPLEMENT_SERIAL (CMyObject, CObject, VERSIONABLE_SCHEMA|1)
โมฆะ CMyObject::Serialize (CArchiveamp; ar) {
ถ้า (arIsLoading(&))
{
int nVersion = arGetObjectSchema()
switch(nVersion)
{
กรณีที่ 0:
/ / อ่านในรุ่นก่อนหน้าของ / / วัตถุนี้
break
กรณีที่ 1:
/ / อ่านในรุ่นปัจจุบัน
/ / วัตถุนี้
break
เริ่มต้น:
/ / รายงานไม่ทราบรุ่น / / วัตถุนี้
break
}
}
อื่น
{
/ / Normal เก็บโค้ดนี่
}
}
ภาพรวม CArchive |nbsp สมาชิกของคลาส| แผนภูมิของลำดับชั้น(&N)
ดูเพิ่มเติมnbspCObject::Serialize, CObject::IsSerializable, IMPLEMENT_SERIAL, DECLARE_SERIAL, CArchive::IsLoading(&N)