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