using SharpRepository.Repository.Caching; namespace SharpRepository.Repository.Configuration { public interface IConfigCachingStrategyFactory { ICachingStrategy GetInstance(ICachingProvider cachingProvider) where T : class; ICompoundKeyCachingStrategy GetInstance(ICachingProvider cachingProvider) where T : class; ICompoundKeyCachingStrategy GetInstance(ICachingProvider cachingProvider) where T : class; ICompoundKeyCachingStrategy GetCompoundKeyInstance(ICachingProvider cachingProvider) where T : class; } public abstract class ConfigCachingStrategyFactory : IConfigCachingStrategyFactory { protected ICachingStrategyConfiguration CachingStrategyConfiguration; protected ConfigCachingStrategyFactory(ICachingStrategyConfiguration config) { CachingStrategyConfiguration = config; } public abstract ICachingStrategy GetInstance(ICachingProvider cachingProvider) where T : class; public abstract ICompoundKeyCachingStrategy GetInstance(ICachingProvider cachingProvider) where T : class; public abstract ICompoundKeyCachingStrategy GetInstance(ICachingProvider cachingProvider) where T : class; public abstract ICompoundKeyCachingStrategy GetCompoundKeyInstance(ICachingProvider cachingProvider) where T : class; } }