public bool StringSet(FileBasedKey key, FileBasedValue value, TimeSpan? expiry, When when)
            {
                if (ContainsKey(key) && when == When.NotExists)
                    return false;

                if (expiry.HasValue)
                    value = new FileBasedValueWithExpiry(value, DateTime.Now, expiry);

                this[key] = value;

                return true;
            }
 private static void SetValueForKey(string key, FileBasedValue value)
 {
     using (var stream = new FileStream(MemoryFileFor(key), FileMode.Create))
     {
         using (var writer = new StreamWriter(stream))
         {
             var content = FileBasedValueSerializer.Serialize(value);
             writer.Write(content);
         }
     }
 }
        private object Deserialize(FileBasedValue value, Type objectType)
        {
            if (value.IsNull)
                return null;

            var serializedSharedObject = Encoding.Default.GetBytes(value);
            return Serializer.Deserialize(serializedSharedObject, objectType);
        }
        private async Task<object> DeserializeAsync(FileBasedValue value, Type objectType)
        {
            if (value.IsNull)
                return null;

            return await Task.Run(() =>
            {
                var serializedSharedObject = Encoding.Default.GetBytes(value);
                return Serializer.Deserialize(serializedSharedObject, objectType);
            });
        }
 public static string Serialize(FileBasedValue value)
 {
     var valueWithExpiry = value as FileBasedValueWithExpiry;
     return valueWithExpiry != null 
         ? String.Format(
             "{1}{0}{2}{0}{3}", 
             FieldSeparator, 
             valueWithExpiry.Value, 
             valueWithExpiry.CreationTime.ToBinary(), 
             valueWithExpiry.Expiry.GetValueOrDefault().TotalMilliseconds) 
         : value.Value;
 }
 public Task<bool> StringSetAsync(FileBasedKey key, FileBasedValue value, TimeSpan? expiry, When exists)
 {
     return Task.Run(() => StringSet(key, value, expiry, exists));
 }