示例#1
0
        override public IDictionary <string, object> Deserialize(byte[] data)
        {
            IDictionary <string, object> dict = packer.Unpack(data) as IDictionary <string, object>;

            return(dict);
            //return dict as IDictionary<string, object>;
            //return packer.Unpack<IDictionary<string, object>>( data ) as IDictionary<string, object>;
        }
示例#2
0
        public void MapTest()
        {
            BoxingPacker packer              = new BoxingPacker();
            Dictionary <object, object> dic  = new Dictionary <object, object> ();
            Dictionary <object, object> dic2 = new Dictionary <object, object> ();

            RoundtripTest <IDictionary <object, object> > (packer, dic);

            dic2.Add(123, 456);
            dic2.Add(234, 567);
            dic2.Add(345, 678);

            dic.Add(0, 0.123);
            dic.Add(Math.PI, true);
            dic.Add(false, new object[] { 1, 2, 3 });
            dic.Add(1, new Dictionary <object, object> (dic2));
            RoundtripTest <IDictionary <object, object> > (packer, dic);

            dic[1] = ((Dictionary <object, object>)dic[1]).ToArray();
            Assert.AreEqual(dic, packer.Unpack(packer.Pack(dic.ToArray())));
        }
示例#3
0
        // 通信結果解凍.サーバーからのレスポンスはzip圧縮されて返ってくる想定.
        private System.Object[] UnpackObject(byte[] data)
        {
            if (data == null || data.Length <= 0)
            {
                this.IsServerError = true;
                return(null);
            }
            for (int i = 0; i < data.Length; ++i)
            {
                data[i] = (byte)(data[i] ^ 0x9A);
            }
            this.ResultObjectBytes = ZlibStream.UncompressBuffer(data);                         // 解凍にはIonic.Zlib.dllを使用.

            var packer = new BoxingPacker();
            var result = packer.Unpack(this.ResultObjectBytes) as System.Object[];              // IMsgPackのデシリアライズ

            if (result == null)
            {
                this.IsServerError = true;
            }
            return(result);
        }
示例#4
0
        void RoundtripTest <T> (BoxingPacker packer, T obj)
        {
            T obj2 = (T)packer.Unpack(packer.Pack(obj));

            Assert.AreEqual(obj, obj2);
        }
示例#5
0
        public void NullTest()
        {
            BoxingPacker packer = new BoxingPacker();

            Assert.IsNull(packer.Unpack(packer.Pack(null)));
        }
示例#6
0
 /// <summary>
 /// bytes反序列化成对像
 /// </summary>
 /// <typeparam name="T">对像类型</typeparam>
 /// <param name="data">bytes</param>
 /// <returns>对像</returns>
 public T Deserialize <T>(byte[] data)
 {
     return((T)packer.Unpack(data));
 }