/// <summary>
/// Restores the backup to the object.
/// </summary>
public void RestoreBackup()
{
Dictionary <string, object> oldPropertyValues = null;
using (var stream = new MemoryStream(_propertyValuesBackup))
{
try
{
var serializer = SerializationFactory.GetXmlSerializer();
var properties = serializer.DeserializeMembers(_object.GetType(), stream);
oldPropertyValues = properties.ToDictionary(property => property.Name, property => property.Value);
}
catch (Exception ex)
{
Log.Error(ex, "Failed to deserialize the data for backup, which is weird. However, for Silverlight, Windows Phone and Windows 8 there is no other option");
}
}
if (oldPropertyValues == null)
{
return;
}
foreach (KeyValuePair <string, object> propertyValue in oldPropertyValues)
{
if (PropertyDataManager.IsPropertyRegistered(_object.GetType(), propertyValue.Key))
{
// Set value so the PropertyChanged event is invoked
_object.SetValue(propertyValue.Key, propertyValue.Value);
}
}
_object.IsDirty = (bool)_objectValuesBackup[IsDirty];
}