2

谁能向我解释为什么从 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)
  {
  }
}
4

1 回答 1

3

该类implements ,它允许覆盖它的序列化方式Exception由于的实现不使用反射来确定要序列化的字段,因此您需要覆盖它并自己显式列出任何新字段。然后,您还需要在构造函数中恢复这些字段。ISerializableExceptionExceptionGetObjectData

于 2013-06-06T12:15:22.783 回答