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

Consulte também

Referência

Classe CArchive

Gráfico de hierarquia

CObject::Serialize

CObject::IsSerializable

IMPLEMENT_SERIAL

DECLARE_SERIAL

CArchive::IsLoading

Outros recursos

CArchive membros