【问题标题】:How to Serialize & Deserialize Exception Objects Without any Data Loss?如何序列化和反序列化异常对象而不丢失任何数据?
【发布时间】:2017-04-21 08:14:55
【问题描述】:

我正在尝试序列化异常对象并将其存储到文件中,然后通过反序列化将其取回。

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)

有没有其他方法可以在不丢失任何数据的情况下存储和检索完整的异常对象?

【问题讨论】:

    标签: c# .net exception serialization system.reflection


    【解决方案1】:

    Exception 实现 Iserializablecontrols how it get serialized

    您可以从异常继承并覆盖GetObjectData。不要忘记在派生类中添加Serializable 属性。

    【讨论】:

      猜你喜欢
      • 2015-06-28
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 2011-02-27
      • 2023-03-25
      • 1970-01-01
      相关资源
      最近更新 更多