共用方式為


CArchive::GetObjectSchema

Serialize 函式的呼叫此函式以判斷序列化目前物件的版本。

UINT GetObjectSchema( );

傳回值

在還原序列化期間,讀取物件的版本。

備註

呼叫此函式才有效,在 CArchive 物件載入時 (CArchive::IsLoading 傳回非零)。 它應該只呼叫一次的呼叫會在 Serialize 函式和。 傳回值 (UINT) – 1 表示版本號碼是未知的。

CObject衍生類別可以使用 VERSIONABLE_SCHEMA 合併 (使用位元 OR) 與結構描述版本 (在 IMPLEMENT_SERIAL 巨集) 即建立物件、可控制版本「,」 Serialize 成員函式上讀取多個版本的物件。 預設架構功能 (沒有 VERSIONABLE_SCHEMA) 會擲回例外狀況,當版本不符時。

範例

IMPLEMENT_SERIAL(CSchemaObject, CObject, VERSIONABLE_SCHEMA | 1)

void CSchemaObject::Serialize(CArchive& ar) 
{
   CObject::Serialize(ar);

   if (ar.IsLoading())
   {
      int nVersion = ar.GetObjectSchema();

      switch(nVersion)
      {
         case 0:
            // read in previous version of 
            // this object
            break;
         case 1:
            // read in current version of
            // this object
            break;
         default:
            // report unknown version of 
            // this object
            break;
      }
   }
   else
   {
     // Normal storing code goes here
   }
}

需求

Header: afx.h

請參閱

參考

CArchive 類別

階層架構圖

CObject::Serialize

CObject::IsSerializable

IMPLEMENT_SERIAL

DECLARE_SERIAL

CArchive::IsLoading