[英]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.