我试图反序列化从Exception类派生的对象:
[Serializable] public class Error : Exception,ISerializable { public string ErrorMessage { get; set; } public Error() { } }
错误error = JsonConvert.DeserializeObject<错误>(“json error obj string”);
它给我错误:
ISerializable类型’type’没有有效的构造函数.
添加一个新的构造函数
public Error(SerializationInfo info,StreamingContext context){}
解决了我的问题
这里完整的代码:
[Serializable] public class Error : Exception { public string ErrorMessage { get; set; } public Error(SerializationInfo info,StreamingContext context) { if (info != null) this.ErrorMessage = info.GetString("ErrorMessage"); } public override void GetObjectData(SerializationInfo info,StreamingContext context) { base.GetObjectData(info,context); if (info != null) info.AddValue("ErrorMessage",this.ErrorMessage); } }