using System; using JiShe.CollectBus.Protocol.Contracts.Interfaces; using JiShe.CollectBus.Protocol.Contracts.Models; using Microsoft.Extensions.Caching.Distributed; namespace JiShe.CollectBus.Protocol.Contracts.Abstracts { public abstract class BaseProtocolPlugin:IProtocolPlugin { private readonly IDistributedCache _cache; protected BaseProtocolPlugin(IDistributedCache cache) { _cache = cache; } public abstract ProtocolInfo Get(); public abstract void Received(); public abstract void Send(); public void Load() { var result = _cache.GetString("myKey"); if (result == null) { result = "Calculated Data"; _cache.SetString("myKey", result, new DistributedCacheEntryOptions { AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(10) }); } } } }