CArchive::GetObjectSchema
telefonar Essa função do Serialize função para determinar a versão do objeto que está sendo desserializado no momento.
UINT GetObjectSchema( );
Valor de retorno
Durante a desserialização, a versão do objeto que está sendo lido.
Comentários
Chamar esta função só é válida quando o CArchive objeto está sendo carregada)CArchive::IsLoading retorna diferente de zero).Ele deve ser a primeira telefonar no Serialize função e telefonar somente uma vez. Um valor retornado (UINT)– 1 indica que o número de versão é desconhecido.
A CObject-classe derivada pode usar VERSIONABLE_SCHEMA combinado (usando o operador bit a bit OR) com a versão de esquema próprio (da IMPLEMENT_SERIALmacro) para criar um "objeto de flexibilidade de versões", ou seja, um objeto cujo Serialize função de membro pode ler várias versões. A funcionalidade de estrutura padrão (sem VERSIONABLE_SCHEMA) é lançar uma exceção quando a versão é incompatível.
Exemplo
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
Cabeçalho: afx.h