private string SerializeObject(object obj)
        {
            var prefix = Prefix.ForObject(obj);

            string serialized = Serialize(obj, this.network);

            return(string.Format("{0}#{1}", (int)prefix.DataType, serialized));
        }
Example #2
0
        private byte[] Encode(object o)
        {
            Prefix prefix = Prefix.ForObject(o);

            byte[] serializedBytes = this.primitiveSerializer.Serialize(o);

            var result = new byte[prefix.Length + serializedBytes.Length];

            prefix.CopyTo(result);

            serializedBytes.CopyTo(result, prefix.Length);

            return(result);
        }
Example #3
0
        private object Decode(byte[] bytes)
        {
            if (bytes == null)
            {
                throw new ArgumentNullException(nameof(bytes));
            }

            if (bytes.Length == 0)
            {
                throw new ArgumentOutOfRangeException(nameof(bytes));
            }

            var prefix = new Prefix(bytes[0]);

            byte[] paramBytes = bytes.Skip(prefix.Length).ToArray();

            return(this.primitiveSerializer.Deserialize(prefix.Type, paramBytes));
        }
Example #4
0
        private static string SerializeObject(object obj)
        {
            var prefix = Prefix.ForObject(obj);

            var primitiveType = GetPrimitiveType(obj);

            // ToString works fine for all of our data types except byte arrays.
            string serialized;

            if (primitiveType == MethodParameterDataType.ByteArray)
            {
                serialized = ((byte[])obj).ToHexString();
            }
            else
            {
                serialized = obj.ToString();
            }

            return(string.Format("{0}#{1}", (int)prefix.DataType, serialized));
        }