public void UnmarshalTest()
        {
            // serialize
            var p1 = new ProtocolResponse
            {
                MessageResponse = new MessageResponse(1, "ok", 10000),
                LoginStage      = 1,
                Sex             = 0,
                Name            = "John",
                Param           = new Dictionary <string, int> {
                    { "aa", 11 }
                },
                EntitySet = new HashSet <MessageEntity> {
                    new MessageEntity(1, 11, false, "xxx1")
                },
                EntityList = new List <MessageEntity> {
                    new MessageEntity(2, 22, false, "xxx2")
                },
                EntityArray = new MessageEntity[1]
            };

            p1.EntityArray[0] = new MessageEntity(4, 44, false, "xxx4");

            byte[] info = p1.ToBytes();

            var file_name = @"response_demo.dat";
            var fs        = new FileStream(file_name, FileMode.Create);

            fs.Write(info, 0, info.Length);
            fs.Flush();
            fs.Close();

            // deserialize
            fs = new FileStream(file_name, FileMode.Open);
            var buffer = new byte[fs.Length];

            fs.Read(buffer, 0, buffer.Length);

            var p2 = new ProtocolResponse();

            p2.ParseFrom(info);

            Assert.AreEqual(p1.MessageResponse, p2.MessageResponse);
            Assert.AreEqual(p1.LoginStage, p2.LoginStage);
            Assert.AreEqual(p1.Sex, p2.Sex);
            Assert.AreEqual(p1.Name, p2.Name);
            Assert.AreEqual(p1.Param.Count, p2.Param.Count);
            Assert.AreEqual(p1.EntityArray.Length, p2.EntityArray.Length);
            Assert.AreEqual(p1.EntityList.Count, p2.EntityList.Count);
            Assert.AreEqual(p1.EntitySet.Count, p2.EntitySet.Count);
        }