37 lines
1.2 KiB
C#
37 lines
1.2 KiB
C#
using System;
|
|
|
|
namespace Gaia.FullSerializer.Internal
|
|
{
|
|
public class fsSerializationCallbackProcessor : fsObjectProcessor
|
|
{
|
|
public override bool CanProcess(Type type)
|
|
{
|
|
return typeof(fsISerializationCallbacks).IsAssignableFrom(type);
|
|
}
|
|
|
|
public override void OnBeforeSerialize(Type storageType, object instance)
|
|
{
|
|
((fsISerializationCallbacks)instance).OnBeforeSerialize(storageType);
|
|
}
|
|
|
|
public override void OnAfterSerialize(Type storageType, object instance, ref fsData data)
|
|
{
|
|
((fsISerializationCallbacks)instance).OnAfterSerialize(storageType, ref data);
|
|
}
|
|
|
|
public override void OnBeforeDeserializeAfterInstanceCreation(Type storageType, object instance, ref fsData data)
|
|
{
|
|
if (!(instance is fsISerializationCallbacks))
|
|
{
|
|
throw new InvalidCastException("Please ensure the converter for " + storageType?.ToString() + " actually returns an instance of it, not an instance of " + instance.GetType());
|
|
}
|
|
((fsISerializationCallbacks)instance).OnBeforeDeserialize(storageType, ref data);
|
|
}
|
|
|
|
public override void OnAfterDeserialize(Type storageType, object instance)
|
|
{
|
|
((fsISerializationCallbacks)instance).OnAfterDeserialize(storageType);
|
|
}
|
|
}
|
|
}
|