Share via


CArchive::GetObjectSchema

Llame a esta función desde la función de Serialize para determinar la versión del objeto que se está deserializando actualmente.

UINT GetObjectSchema( );

Valor devuelto

Durante la deserialización, la versión del objeto que se lee.

Comentarios

Llamar a esta función solo es válido cuando el objeto de CArchive se carga (CArchive:: IsLoading devuelve cero).Debe ser la primera llamada a la función de Serialize y denominada sólo una vez.un valor devuelto de (UINT) – 1 indica que el número de versión es desconocido.

CObject- la clase derivada puede utilizar VERSIONABLE_SCHEMA combinado (mediante ORbit a bit) con la versión propia de esquema (en la macro de IMPLEMENT_SERIAL ) para crear un “objeto versionable”, es decir, un objeto cuya función miembro de Serialize pueda leer varias versiones.La funcionalidad predeterminada de marco (sin VERSIONABLE_SCHEMA) es producir una excepción cuando se une incorrectamente la versión.

Ejemplo

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
   }
}

Requisitos

encabezado: afx.h

Vea también

Referencia

Clase CArchive

Gráfico de jerarquía

CObject::Serialize

CObject::IsSerializable

IMPLEMENT_SERIAL

DECLARE_SERIAL

CArchive::IsLoading