目前,我正在創建一個對象的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方面的類如何增強您的類? –