示例#1
0
        public void Deserialize_WhenFrameReqPqDeserialized_ThenExpectedObjectReturned()
        {
            // arrange
            byte[] bytes =
            {
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x14, 0x00, 0x00, 0x00,
                0x78, 0x97, 0x46, 0x60,
                0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
                0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10
            };

            TLFrame <ReqPq> expectedFrame = new TLFrame <ReqPq>
            {
                AuthKey       = 0,
                MessageId     = 0,
                MessageLength = 20,
                Content       = new ReqPq
                {
                    Nonce = new byte[]
                    {
                        0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
                        0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10
                    }
                }
            };

            // act
            TLFrame <ReqPq> result = TLObjectSerializer.Deserialize <TLFrame <ReqPq> >(bytes.ToList());

            // assert
            result.ShouldBeEquivalentTo(expectedFrame);
        }
        public T Deserialize <T>(string parameter)
        {
            if (string.IsNullOrEmpty(parameter))
            {
                return((T)(object)null);
            }

            if (parameter.StartsWith("{"))
            {
                return(SerializationService.Json.Deserialize <T>(parameter));
            }

            var length = parameter.Length;
            var bytes  = new byte[length / 2];

            for (int i = 0; i < length; i += 2)
            {
                bytes[i / 2] = Convert.ToByte(parameter.Substring(i, 2), 16);
            }

            if (parameter.StartsWith("0EFFFFFF"))
            {
                return((T)(object)bytes.Skip(4).ToArray());
            }

            var buffer = bytes.AsBuffer();
            var from   = TLObjectSerializer.Deserialize(buffer);

            return((T)(object)from);
        }