Currently I am creating a DTO of an object to compare new and old values. It was fine when it was one object, but in the future that's going to change. I tried creating an extension method to serialize and deserialize for a deep copy, but PostSharp is throwing an error.
Type 'PostSharp.Patterns.Model.NotifyPropertyChanged.ChangeTracking.ChildPropertyChangedProcessor' in Assembly 'PostSharp.Patterns.Model, Version=4.2.28.0, Culture=neutral, PublicKeyToken=e7f631e6ce13f078' is not marked as serializable. (SerializationException)
Here is my extension method and the error is being thrown at formatter.Serialize(stream, source).
public static T Clone<T>(this T source)
{
if (!typeof(T).IsSerializable)
{
return default(T);
}
if (ReferenceEquals(source, null))
{
return default(T);
}
var formatter = new BinaryFormatter();
Stream stream = new MemoryStream();
using (stream)
{
formatter.Serialize(stream, source);
stream.Seek(0, SeekOrigin.Begin);
return (T) formatter.Deserialize(stream);
}
}
Is there a way to fix this error or do I have to do this another way? If I do have to find another way what approach should I take?