/// <summary> /// Persists a CacheSet object. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="cacheSet"></param> public async Task Cache <T>(ICacheSet <T> cacheSet, ICacheMap <T> cacheMap) where T : class { var setKey = cacheSet.Name; switch (cacheSet.Type) { case CacheType.Set: var cacheSetElements = cacheSet.GetSet(); CacheSetElements(setKey, cacheSetElements, cacheMap); break; case CacheType.Hash: var cachedHashes = cacheSet.GetHashes(); await CacheHashes(setKey, cachedHashes, cacheMap); break; default: throw new NotImplementedException("Unsupported cache type!"); } // var mValue = member.GetValue(this); // var valType = mValue.GetType(); // //Use the member type for mapping, instead of converting to hashmap every time.. // if (typeof(IDictionary).IsAssignableFrom(valType)) // { // var dictValueType = valType.GetGenericArguments().Skip(1).FirstOrDefault(); // if (dictValueType != null && !dictValueType.IsPrimitive) // { // CacheDictionary(mValue as IDictionary, member); // } // else // { // throw new NotImplementedException(); // } // } // else if (typeof(IEnumerable).IsAssignableFrom(valType)) // { // var dictValueType = valType.GetGenericArguments().FirstOrDefault(); // if (dictValueType != null && dictValueType.IsPrimitiveConvertable()) // { // CacheEnumerable(mValue as IEnumerable, member); // } // else // { // throw new NotImplementedException(); // } // } // var cacheReadyValue = SerializeMember(member, mValue); // _cacher.SetHash(cacheKeyBase, cacheReadyValue); }