public static void Initialize(params Assembly[] assemblies) { if (assemblies is null) { throw new ArgumentNullException(nameof(assemblies)); } if (assemblies.Length == 0) { assemblies = new Assembly[] { typeof(Converter).Assembly }; } _convertersMetadataMap = new ConcurrentDictionary <string, Type>(); _convertersCache = new SimpleMemoryCache <Type, INumberToWordsConverter>(); var converterTypes = assemblies.SelectMany(x => x.ExportedTypes) .Where(x => typeof(INumberToWordsConverter).IsAssignableFrom(x) && !x.IsInterface && !x.IsAbstract) .Where(x => x.GetCustomAttribute <NumberToWordsConverterAttribute>() != null) .ToArray(); foreach (var convType in converterTypes) { var key = convType.GetCustomAttribute <NumberToWordsConverterAttribute>()?.LanguageCode; _convertersMetadataMap[key] = convType; } }
public async Task GetOrCreateAsyncFactoryCalledTest() { SimpleMemoryCache <string, string> cache = new SimpleMemoryCache <string, string>(TimeSpan.FromHours(1)); int callsCount = 0; var value = await cache.GetOrCreateAsync("key", key => { callsCount++; return(Task.FromResult("value")); }); Assert.AreEqual(1, callsCount); Assert.AreEqual("value", value); }
public async Task GetOrCreateAsyncTimespanTest() { SimpleMemoryCache <string, string> cache = new SimpleMemoryCache <string, string>(TimeSpan.FromTicks(0)); int callsCount = 0; await cache.GetOrCreateAsync("key", key => { callsCount++; return(Task.FromResult("value")); }); var value = await cache.GetOrCreateAsync("key", key => { callsCount++; return(Task.FromResult("value 2")); }); Assert.AreEqual(2, callsCount); Assert.AreEqual("value 2", value); }
static void Main(string[] args) { ICache cache = new SimpleMemoryCache(); cache.AddOrUpdate("Test", "Hello Arul!!!", "Console"); cache.AddOrUpdate("NullSession", "Null Session Orginal data", string.Empty); Console.WriteLine("Hello World!"); Console.WriteLine(cache.Get("Test", "Console")); Console.WriteLine(cache["Test"]?.FirstOrDefault()); Console.WriteLine(cache.Get("NullSession", string.Empty)); cache.AddOrUpdate("NullSession", "Null Session Data Updated", string.Empty); Console.WriteLine(cache.Get("NullSession", string.Empty)); Console.ReadLine(); }
public BooksController(ILogger logger, SimpleMemoryCache <Book> cache, IRepository <Book> repository) { _logger = logger; _cache = cache; _repository = repository; }