目前,我正在创建一个对象的DTO
来比较新值和旧值。当它是一个对象时很好,但将来会发生变化。我试图创建一个extension method
到serialize
和deserialize
深层复制,但PostSharp
是抛出一个错误。c#比较对象而不创建dto
类型 'PostSharp.Patterns.Model.NotifyPropertyChanged.ChangeTracking.ChildPropertyChangedProcessor' 在大会 'PostSharp.Patterns.Model,版本= 4.2.28.0, 文化=中性公钥= e7f631e6ce13f078' 没有被标记为 可串行化。 (SerializationException)
这是我的扩展方法,错误正在抛出在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);
}
}
有没有办法解决这个错误,或者我必须以另一种方式做到这一点?如果我不得不另外找到我应该采取的方法吗?
你尝试升级到PostSharp 4.3? NotifyPropertyChanged方面的类如何增强您的类? –