【发布时间】:2017-03-25 03:15:06
【问题描述】:
目前我正在创建一个对象的DTO 来比较新旧值。当它是一个对象时很好,但将来会改变。我尝试创建一个extension method 到serialize 和deserialize 以进行深层复制,但PostSharp 抛出一个错误。
类型 'PostSharp.Patterns.Model.NotifyPropertyChanged.ChangeTracking.ChildPropertyChangedProcessor' 在大会'PostSharp.Patterns.Model,版本= 4.2.28.0, Culture=neutral, PublicKeyToken=e7f631e6ce13f078' 未标记为 可序列化的。 (序列化异常)
这是我的扩展方法,错误被抛出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 方面增强的类看起来如何?
标签: c# entity-framework-6 postsharp serializable