public object Convert(object value, Type fromType, Type toType) { if (fromType == typeof(String)) // Convert from binary to object { for (int index = 0; index < _types.Count; index++) { Type type = _types[index]; if ((toType == type) || (toType.IsSubclassOf(type) && _includeSubTypes[index])) { byte[] bytes = System.Convert.FromBase64String((String)value); if (_compression) { MemoryStream stream = new MemoryStream(DeflateStreamCompression.DecompressBytes(bytes)); return(BinarySerializationUtilities.DeserializeFromMemoryStream(stream)); } else { MemoryStream stream = new MemoryStream(bytes); return(BinarySerializationUtilities.DeserializeFromMemoryStream(stream)); } } } } else if (toType == typeof(String)) // Convert from object to binary { for (int index = 0; index < _types.Count; index++) { Type type = _types[index]; if ((fromType == type) || (fromType.IsSubclassOf(type) && _includeSubTypes[index])) { MemoryStream stream = BinarySerializationUtilities.SerializeToMemoryStream(value); if (_compression) { byte[] bytes = stream.GetBuffer(); return(System.Convert.ToBase64String(DeflateStreamCompression.CompressBytes(bytes))); } else { byte[] bytes = stream.GetBuffer(); return(System.Convert.ToBase64String(bytes)); } } } } throw new NotImplementedException(); }
/// <summary> /// Converts from base 64 string, decompresses if required /// </summary> /// <param name="base64EncodedData"></param> /// <param name="compression"></param> /// <returns></returns> private static string ConvertFromBase64(string base64EncodedData, bool compression) { var bytes = System.Convert.FromBase64String(base64EncodedData); return(compression ? System.Text.Encoding.UTF8.GetString(DeflateStreamCompression.DecompressBytes(bytes)) : System.Text.Encoding.UTF8.GetString(bytes)); }
/// <summary> /// Converts to base 64 string, compresses if required /// </summary> /// <param name="plainText"></param> /// <param name="compression"></param> /// <returns></returns> private static string ConvertToBase64(string plainText, bool compression) { var bytes = System.Text.Encoding.UTF8.GetBytes(plainText); return(compression ? System.Convert.ToBase64String(DeflateStreamCompression.CompressBytes(bytes)) : System.Convert.ToBase64String(bytes)); }