Как получить список ключей кэша памяти в .NET Core?

#caching #.net-core #memory

#кэширование #.net-core #память

Вопрос:

Как составить список всех ключей реестра из кэша памяти в веб-приложении .NET Core?

Комментарии:

1. Просто foreach ? Он имеет GetEnumerator() (который foreach использует): learn.microsoft.com/en-us/dotnet/api / … (но смотрите примечание с пометкой «важно»)

Ответ №1:

Я нашел. Я делюсь этим, чтобы помочь вам.

 var cacheEntriesCollectionDefinition = typeof(MemoryCache).GetProperty("EntriesCollection", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
        var cacheEntriesCollection = cacheEntriesCollectionDefinition.GetValue(_cache) as dynamic;
        List<ICacheEntry> cacheCollectionValues = new List<ICacheEntry>();

        foreach (var cacheItem in cacheEntriesCollection)
        {
            ICacheEntry cacheItemValue = cacheItem.GetType().GetProperty("Value").GetValue(cacheItem, null);
            cacheCollectionValues.Add(cacheItemValue);
        }