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); }
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); }