| using Microsoft.Extensions.Caching.Memory; | 
| using SqlSugar; | 
| using System; | 
| using System.Collections; | 
| using System.Collections.Generic; | 
| using System.Linq; | 
| using System.Reflection; | 
| using System.Text; | 
| using System.Threading.Tasks; | 
|   | 
| namespace WIDESEA_Core.Caches | 
| { | 
|     /// <summary> | 
|     /// 实现SqlSugar的ICacheService接口 | 
|     /// </summary> | 
|     public class SqlSugarCacheService : ICacheService | 
|     { | 
|         private readonly Lazy<ICaching> _caching = new(() => App.GetService<ICaching>(false)); | 
|         private ICaching Caching => _caching.Value; | 
|   | 
|         public void Add<V>(string key, V value) | 
|         { | 
|             Caching.Set(key, value); | 
|         } | 
|   | 
|         public void Add<V>(string key, V value, int cacheDurationInSeconds) | 
|         { | 
|             Caching.Set(key, value, TimeSpan.FromSeconds(cacheDurationInSeconds)); | 
|         } | 
|   | 
|         public bool ContainsKey<V>(string key) | 
|         { | 
|             return Caching.Exists(key); | 
|         } | 
|   | 
|         public V Get<V>(string key) | 
|         { | 
|             return Caching.Get<V>(key); | 
|         } | 
|   | 
|         public IEnumerable<string> GetAllKey<V>() | 
|         { | 
|             return Caching.GetAllCacheKeys(); | 
|         } | 
|   | 
|         public V GetOrCreate<V>(string cacheKey, Func<V> create, int cacheDurationInSeconds = int.MaxValue) | 
|         { | 
|             if (!ContainsKey<V>(cacheKey)) | 
|             { | 
|                 var value = create(); | 
|                 Caching.Set(cacheKey, value, TimeSpan.FromSeconds(cacheDurationInSeconds)); | 
|                 return value; | 
|             } | 
|   | 
|             return Caching.Get<V>(cacheKey); | 
|         } | 
|   | 
|         public void Remove<V>(string key) | 
|         { | 
|             Caching.Remove(key); | 
|         } | 
|   | 
|         public bool RemoveAll() | 
|         { | 
|             Caching.RemoveAll(); | 
|             return true; | 
|         } | 
|     } | 
| } |