views:

94

answers:

1

I'm trying to deserialize object derived from Exception class:

   [Serializable]
   public class Error : Exception, ISerializable
   {
    public string ErrorMessage { get; set; }
    public Error() { }
   }

Error error = JsonConvert.DeserializeObject< Error >("json error obj string");

It gives me error:

ISerializable type 'type' does not have a valid constructor.

+1  A: 

Adding a new constructor

public Error(SerializationInfo info, StreamingContext context){}
solved my problem.

Here complete code:


    [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);
        }
    }