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