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>; }
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()))); }
// 通信結果解凍.サーバーからのレスポンスは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); }
void RoundtripTest <T> (BoxingPacker packer, T obj) { T obj2 = (T)packer.Unpack(packer.Pack(obj)); Assert.AreEqual(obj, obj2); }
public void NullTest() { BoxingPacker packer = new BoxingPacker(); Assert.IsNull(packer.Unpack(packer.Pack(null))); }
/// <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)); }