CArchive::GetObjectSchema

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)

Index