繁体   English   中英

如何在没有任何数据丢失的情况下序列化和反序列化异常对象?

[英]How to Serialize & Deserialize Exception Objects Without any Data Loss?

我正在尝试序列化并将Exception对象存储到文件中,然后通过反序列化将其检索回来。

File.Delete(_FilePath);
using (Stream stream = File.Open(_FilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
    new BinaryFormatter().Serialize(stream, originalException);
}

using (Stream stream = File.Open(_FilePath, FileMode.Open, FileAccess.Read))
{
     Exception deserializedException = (Exception)(new BinaryFormatter().Deserialize(stream));
   // deserializedException.TargetSite is null!!!
}

但是,反序列化的Exception对象的TargetSite属性为null。 也就是说,它没有被序列化,因此它也没有被反序列化。 TargetSite属性的类型为MethodBase。 (序列化MethodBase没有意义IMO)

有没有其他方法来存储和检索完整的Exception对象而没有任何数据丢失?

Exception实现了Iserializable控制它如何被序列化

您可以从异常中GetObjectData并重写GetObjectData 不要忘记将Serailizable属性添加到派生类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM