簡體   English   中英

當類從Exception繼承時,BinaryFormatter不會序列化公共字段,為什么?

[英]BinaryFormatter doesn't serialize public fields when a class is inherited from Exception, why?

誰能向我解釋為什么從Exception繼承的以下類不序列化私有字段?

從異常派生時,我應該手動序列化對象嗎?

[Serializable]
public class Test : Exception
{
  private int _errNo = 0;
  private string _msg = String.Empty;

  public int ErrNo
  {
    get { return _errNo; }
  }

  public string Msg
  {
    get { return _msg; }
  }

  public Test(int err, string msg)
  {
    _errNo = err;
    _msg = msg;
  }

  protected Test(System.Runtime.Serialization.SerializationInfo info,
    System.Runtime.Serialization.StreamingContext kontekst)
    : base(info, kontekst)
  {
  }
}

Exception實現ISerializable ,它允許Exception重寫其序列化方式。 由於ExceptionGetObjectData實現不使用反射來確定要序列化的字段,因此您需要覆蓋它並自己明確列出任何新字段。 然后,您還需要在構造函數中還原這些字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM