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