public static async Task <IList <ICacheKey <TEntry> > > KeysAsync <TEntry>(this ICacheKey <TEntry> entry, Installation installation = Installation.Default) where TEntry : new() { Type keyType = entry.GetType(); IList <ICacheKey <TEntry> > keys = new List <ICacheKey <TEntry> >(); foreach (string key in await entry.Manager <ICacheKey <TEntry>, TEntry>().ListAsync(installation)) { ICacheKey <TEntry> multitonKey = (ICacheKey <TEntry>)Activator.CreateInstance(keyType); IEnumerator <string> keyValues = PropertyValue(key); if (!keyValues.MoveNext()) { continue; } foreach (PropertyInfo property in keyType.FetchProperties(ICacheKey <TEntry> .CacheIgnore)) { property.SetValue(multitonKey, Convert.ChangeType(keyValues.Current, property.PropertyType)); if (!keyValues.MoveNext()) { break; } } keys.Add(multitonKey); } return(keys);
public static async Task <bool> RestoreAsync <TEntry>(this ICacheKey <TEntry> entry, TEntry value = default, TimeSpan expiringTime = default, Installation installation = Installation.Default) where TEntry : new() => await entry.Manager <ICacheKey <TEntry>, TEntry>().UpdateAsync(entry, value, expiringTime, installation).NoContext();
public static async Task <bool> IsPresentAsync <TEntry>(this ICacheKey <TEntry> entry, Installation installation = Installation.Default) where TEntry : new() => await entry.Manager <ICacheKey <TEntry>, TEntry>().ExistsAsync(entry, installation).NoContext();
public static async Task <TEntry> InstanceAsync <TEntry>(this ICacheKey <TEntry> entry, Installation installation = Installation.Default, bool withConsistency = false) where TEntry : new() => await entry.Manager <ICacheKey <TEntry>, TEntry>().InstanceAsync(entry, withConsistency, installation).NoContext();