Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
        }