public static AttributeValue CreateValue(T value, IKumoDictionaryValueSerializer serializer)
        {
            var attrValue = new AttributeValue();

            SetValue(attrValue, value, serializer);

            return(attrValue);
        }
예제 #2
0
 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)));
         }
     }
 }
예제 #3
0
 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)));
         }
     }
 }
 public KumoDictionaryAmazonDynamoDBSettings(string tableName, IKumoDictionaryValueSerializer serializer)
 {
     TableName     = tableName;
     Serializer    = serializer;
     KeySerializer = StringKeySerializer.Default;
 }
예제 #5
0
 public KumoDictionaryAzureStorageTableSettings(IKumoDictionaryValueSerializer serializer)
 {
     Serializer    = serializer;
     KeySerializer = StringKeySerializer.Default;
 }
예제 #6
0
 public KumoDictionaryAzureStorageTableProvider(CloudTable table, IKumoDictionaryValueSerializer serializer = null)
 {
     Table    = table;
     Settings = new KumoDictionaryAzureStorageTableSettings(serializer ?? KumoDictionaryValueSerializer.Default);
 }
 public KumoDictionaryAmazonDynamoDBProvider(string tableName, AmazonDynamoDBClient dynamoDBClient, IKumoDictionaryValueSerializer serializer = null)
 {
     DynamoDBClient = dynamoDBClient;
     Settings       = new KumoDictionaryAmazonDynamoDBSettings(tableName, serializer ?? KumoDictionaryValueSerializer.Default);
 }
예제 #8
0
 public KumoDictionaryAzureStorageTableProvider(string connectionString, string tableName, IKumoDictionaryValueSerializer serializer = null)
     : this(GetCloudTable(connectionString, tableName), serializer)
 {
 }
예제 #9
0
 public static IDictionaryTableEntity <TKey, TValue> Create <TKey, TValue>(string partitionKey, TKey rowKey, TValue value, IKumoDictionaryValueSerializer serializer, StringKeySerializer keySerializer)
 {
     if (EntityTypeResolver <TKey, TValue> .IsValueEdmType)
     {
         return(new EdmDictionaryTableEntity <TKey, TValue>(partitionKey, rowKey, value, serializer, keySerializer));
     }
     else
     {
         if (serializer.ValueSerialization == KumoDictionaryValueSerialization.Binary)
         {
             return(new BinaryDictionaryTableEntity <TKey, TValue>(partitionKey, rowKey, value, serializer, keySerializer));
         }
         else
         {
             return(new StringDictionaryTableEntity <TKey, TValue>(partitionKey, rowKey, value, serializer, keySerializer));
         }
     }
 }
예제 #10
0
 public BinaryDictionaryTableEntity(string partitionKey, TKey rowKey, TValue value, IKumoDictionaryValueSerializer serializer, StringKeySerializer keySerializer)
 {
     PartitionKey = partitionKey;
     RowKey       = keySerializer.SerializeAsKey(serializer, rowKey);
     RawValue     = serializer.Serialize(value);
 }
예제 #11
0
 public TValue GetValue(IKumoDictionaryValueSerializer serializer)
 {
     return(serializer.Deserialize <TValue>(Encoding.UTF8.GetBytes(RawValue)));
 }
예제 #12
0
 public TKey GetKey(IKumoDictionaryValueSerializer serializer, StringKeySerializer keySerializer)
 {
     return(keySerializer.DeserializeFromKey <TKey>(serializer, RowKey));
 }
예제 #13
0
 public StringDictionaryTableEntity(string partitionKey, TKey rowKey, TValue value, IKumoDictionaryValueSerializer serializer, StringKeySerializer keySerializer)
 {
     PartitionKey = partitionKey;
     RowKey       = keySerializer.SerializeAsKey(serializer, rowKey);
     RawValue     = new UTF8Encoding(false).GetString(serializer.Serialize(value));
 }
예제 #14
0
 public TValue GetValue(IKumoDictionaryValueSerializer serializer)
 {
     return(RawValue);
 }
예제 #15
0
 public TValue GetValue(IKumoDictionaryValueSerializer serializer)
 {
     return(serializer.Deserialize <TValue>((byte[])(object)RawValue));
 }