using System.Threading.Tasks; using Volo.Abp.Caching; using Volo.Abp.DependencyInjection; using Volo.Abp.Domain.Entities.Events; using Volo.Abp.EventBus; namespace Yi.Framework.SettingManagement.Domain; public class SettingCacheItemInvalidator : ILocalEventHandler>, ITransientDependency { protected IDistributedCache Cache { get; } public SettingCacheItemInvalidator(IDistributedCache cache) { Cache = cache; } public virtual async Task HandleEventAsync(EntityChangedEventData eventData) { var cacheKey = CalculateCacheKey( eventData.Entity.Name, eventData.Entity.ProviderName, eventData.Entity.ProviderKey ); await Cache.RemoveAsync(cacheKey, considerUow: true); } protected virtual string CalculateCacheKey(string name, string providerName, string providerKey) { return SettingCacheItem.CalculateCacheKey(name, providerName, providerKey); } }