private object InterpretStorageValue(MethodParameterDataType dataType, byte[] bytes)
        {
            switch (dataType)
            {
            case MethodParameterDataType.Bool:
                return(this.serializer.ToBool(bytes));

            case MethodParameterDataType.Byte:
                return(bytes[0]);

            case MethodParameterDataType.Char:
                return(this.serializer.ToChar(bytes));

            case MethodParameterDataType.String:
                return(this.serializer.ToString(bytes));

            case MethodParameterDataType.UInt:
                return(this.serializer.ToUInt32(bytes));

            case MethodParameterDataType.Int:
                return(this.serializer.ToInt32(bytes));

            case MethodParameterDataType.ULong:
                return(this.serializer.ToUInt64(bytes));

            case MethodParameterDataType.Long:
                return(this.serializer.ToInt64(bytes));

            case MethodParameterDataType.Address:
                return(this.serializer.ToAddress(bytes));

            case MethodParameterDataType.ByteArray:
                return(bytes.ToHexString());
            }

            return(null);
        }
Example #2
0
        public static string Serialize(object obj, Network network)
        {
            MethodParameterDataType primitiveType = GetPrimitiveType(obj);

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

            switch (primitiveType)
            {
            case MethodParameterDataType.ByteArray:
                serialized = ((byte[])obj).ToHexString();
                break;

            case MethodParameterDataType.Address:
                serialized = ((Address)obj).ToUint160().ToBase58Address(network);
                break;

            default:
                serialized = obj.ToString();
                break;
            }

            return(serialized);
        }