Freigeben über


CArchive::GetObjectSchema

Rufen Sie diese Funktion aus der Serialize-Funktion auf, um die Version des Objekts zu bestimmen, das gerade deserialisiert wird.

UINT GetObjectSchema( );

Rückgabewert

Während der Deserialisierung die Version des Objekts, das gelesen wird.

Hinweise

Diese Funktion aufzurufen ist nur gültig, wenn das Objekt CArchive geladen wird (CArchive::IsLoading gibt Wert ungleich 0 zurück).Es sollte der erste Aufruf in der Serialize-Funktion und nur einmal aufgerufen werden.Ein Rückgabewert von (UINT) - 1 gibt an, dass die Versionsnummer unbekannt ist.

CObject von abgeleitete Klasse verwendet werden VERSIONABLE_SCHEMA kombiniertes (mit bitweisen OR) mit der Schemaversion selbst (im IMPLEMENT_SERIAL-Makro) um ein "verschiedenen Versionen verwendbare - das heißt, zu erstellen," ein Objekt, dessen Serialize-Memberfunktion mehrere Versionen lesen kann.Die standardmäßige Frameworkfunktionen gemeinsam (ohne VERSIONABLE_SCHEMA) ist, eine Ausnahme auszulösen, wenn die Version nicht übereinstimmt.

Beispiel

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

Anforderungen

Header: afx.h

Siehe auch

Referenz

CArchive-Klasse

Hierarchien-Diagramm

CObject::Serialize

CObject::IsSerializable

IMPLEMENT_SERIAL

DECLARE_SERIAL

CArchive::IsLoading