【发布时间】:2012-12-20 14:16:48
【问题描述】:
我有一个继承自 Exception 的类 SearchError,当我尝试从有效的 json 反序列化它时,我得到以下异常:
ISerializable 类型“SearchError”没有有效的构造函数。要正确实现 ISerializable,应该存在采用 SerializationInfo 和 StreamingContext 参数的构造函数。路径 '',第 1 行,位置 81。
我尝试实现建议的缺失构造函数,但没有帮助。
这是实现建议的构造函数后的类:
public class APIError : Exception
{
[JsonProperty("error")]
public string Error { get; set; }
[JsonProperty("@http_status_code")]
public int HttpStatusCode { get; set; }
[JsonProperty("warnings")]
public List<string> Warnings { get; set; }
public APIError(string error, int httpStatusCode, List<string> warnings) : base(error)
{
this.Error = error;
this.HttpStatusCode = httpStatusCode;
this.Warnings = warnings;
}
public APIError(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context)
: base(info, context)
{
Error = (string)info.GetValue("error", typeof(string));
HttpStatusCode = (int)info.GetValue("@http_status_code", typeof(int));
Warnings = (List<string>)info.GetValue("warnings", typeof(List<string>));
}
}
现在我得到以下异常(也在 json.net 代码中):
找不到成员“ClassName”。
我也尝试实现与this related question 中相同的解决方案,也得到了与上述相同的错误。
【问题讨论】:
-
与他人分享您的代码..
-
这里已经回答了这个问题:stackoverflow.com/a/3423037/504836