CArchive::GetObjectSchema
调用从 Serialize 功能的此功能确定当前反序列化对象的版本。
UINT GetObjectSchema( );
返回值
在反序列化期间,读取对象的版本。
备注
调用此功能才是有效的,则 CArchive 对象加载时(CArchive::IsLoading 返回非零)。 它应该是第一次调用 Serialize 函数和一次只调用。 返回值(UINT) – 1指示版本号是未知的。
CObject派生类可以使用 VERSIONABLE_SCHEMA 合并(使用按位 OR)与架构版本(在 IMPLEMENT_SERIAL 宏)即创建“可版本化对象,” Serialize 成员函数可以读取多个版本的对象。 默认结构功能(不 VERSIONABLE_SCHEMA)是引发异常,则该版本不匹配时。
示例
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
}
}
要求
Header: afx.h