public void BeginDeserializing()
{
// Imported objects cannot be deserialized!
if( ImportTable != null )
{
return;
}
// e.g. None.
if( ExportTable.SerialSize == 0 )
{
DeserializationState |= ObjectState.Deserialied;
return;
}
InitBuffer();
try
{
#if DEBUG || BINARYMETADATA
BinaryMetaData = new BinaryMetaData();
#endif
DeserializationState |= ObjectState.Deserializing;
Deserialize();
DeserializationState |= ObjectState.Deserialied;
}
catch( Exception e )
{
ThrownException = e;
ExceptionPosition = _Buffer != null ? _Buffer.Position : -1;
DeserializationState |= ObjectState.Errorlized;
Console.WriteLine( e.Source + ":" + Name + ":" + e.GetType().Name + " occurred while deserializing;"
+ "\r\n" + e.StackTrace
+ "\r\n" + e.Message
);
}
finally
{
DeserializationState &= ~ObjectState.Deserializing;
MaybeDisposeBuffer();
}
}