public virtual T DeserializeFromKey <T>(IKumoDictionaryValueSerializer serializer, string value)
 {
     if (StringKeySerializer <T> .CanSerialize)
     {
         return(StringKeySerializer <T> .Deserialize(value));
     }
     else
     {
         if (serializer.ValueSerialization == KumoDictionaryValueSerialization.Binary)
         {
             return(serializer.Deserialize <T>(Convert.FromBase64String(value)));
         }
         else
         {
             return(serializer.Deserialize <T>(Encoding.UTF8.GetBytes(value)));
         }
     }
 }
 public virtual string SerializeAsKey <T>(IKumoDictionaryValueSerializer serializer, T value)
 {
     if (StringKeySerializer <T> .CanSerialize)
     {
         return(StringKeySerializer <T> .Serialize(value));
     }
     else
     {
         if (serializer.ValueSerialization == KumoDictionaryValueSerialization.Binary)
         {
             return(Convert.ToBase64String(serializer.Serialize(value)));
         }
         else
         {
             return(new UTF8Encoding(false).GetString(serializer.Serialize(value)));
         }
     }
 }