protected BabelException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) : base(info, context) { string contextStr = info.GetString("Context"); var ser = new BabelJsonSerializer(); using(var ms = new System.IO.MemoryStream((new UTF8Encoding(false)).GetBytes(contextStr))) { m_context = ser.Deserialize<Dictionary<string, Dictionary<string, string>>>(ms); } int cnt = info.GetInt32("ErrorsCnt"); for(int i = 0; i < cnt; i++) { string n = i.ToString(); var err = new Error { Code = info.GetString("ECode" + n), Message = info.GetString("EMessage" + n) }; int parmCnt = info.GetInt32("EParmsCnt"); err.Params = new List<string>(); for(int pidx = 0; pidx < parmCnt; pidx++) { err.Params.Add(info.GetString("EParm" + n + "-" + pidx)); } m_errors.Add(err); } }
public override void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context) { if(info == null) throw new ArgumentNullException("info"); var ser = new BabelJsonSerializer(); using(var strm = ser.Serialize(Context)) { info.AddValue("Context", strm.GetString()); } info.AddValue("ErrorsCnt", Errors.Count); for(int j = 0; j < Errors.Count; j++) { string n = j.ToString(); var err = Errors[j]; info.AddValue("ECode" + n, err.Code); info.AddValue("EMessage" + n, err.Message); info.AddValue("EParmsCnt", err.Params.Count); for(int pidx = 0; pidx < err.Params.Count; pidx++) { info.AddValue("EParm" + n + "-" + pidx, err.Params[pidx]); } } base.GetObjectData(info, context); }