惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
雷峰网
雷峰网
博客园 - 三生石上(FineUI控件)
月光博客
月光博客
有赞技术团队
有赞技术团队
阮一峰的网络日志
阮一峰的网络日志
Last Week in AI
Last Week in AI
G
Google Developers Blog
腾讯CDC
B
Blog
Microsoft Azure Blog
Microsoft Azure Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Microsoft Security Blog
Microsoft Security Blog
人人都是产品经理
人人都是产品经理
博客园_首页
T
Tailwind CSS Blog
C
Check Point Blog
博客园 - 【当耐特】
MongoDB | Blog
MongoDB | Blog
A
About on SuperTechFans
Y
Y Combinator Blog
L
LangChain Blog
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI

博客园 - 永恒一生

.net 7 .net 6 visual studio 智能提示汉化翻译中文版 dotnet 7 来帮助我们使用 asp.net core开发的时候,一些参数或者方法可以更好的使用! 百度的文心一格给我画的画,是不是我表达有问题?? .net 框架引用asp.net core某些包提示已弃用,此包是旧版本且不再受到维护,因此已被弃用。如何处理! .net core webApi接受不到UploadFile的文件? sql server在我把JSON数据存入到字段的时候中文乱码问题 git 语句操作命令 IIS设置了歌词为text/plain格式,但是.net core项目还是访问不了,404,是应.net core里没有支持 System.Net.Sockets.SocketException:“在其上下文中,该请求的地址无效。” AssetStudio/UnityStudio Error while validating the service descriptor 'ServiceType IOptions取bind值,总是取不到 dapper执行存储过程找不到 查询当前数据查询锁死语句SP_WHO3 sqlserver 统计数据库每个数据表的条数 sqlserver整理表碎片 vs 2022 key 你懂的 用宝塔搭建IIS网站的目录虚拟用户该如何添加到其他目录? HTTP Error 500.0 - ASP.NET Core IIS hosting failure (in-process) .net core 5.0部署到IIS出现500.30错误,
.net 7 获取所有缓存键的问题?
永恒一生 · 2022-11-30 · via 博客园 - 永恒一生
这里是群友提供听说是issue提的问题,高手回答的。

var

coherentState = _cache.GetType().GetField("_coherentState", BindingFlags.NonPublic | BindingFlags.Instance); var coherentStateValue = coherentState.GetValue(_cache); var entriesCollection = coherentStateValue.GetType().GetProperty("EntriesCollection", BindingFlags.NonPublic | BindingFlags.Instance); var entriesCollectionValue = entriesCollection.GetValue(coherentStateValue) as ICollection; var keys = new List<string>(); if (entriesCollectionValue != null) { foreach (var item in entriesCollectionValue) { var methodInfo = item.GetType().GetProperty("Key"); var val = methodInfo.GetValue(item); keys.Add(val.ToString()); } } return keys;

由于.net 7源码改变了,_entries外面又套了一层_coherentState,致使无法获取所有键值。

通过查看源码我自己修改了如下代码:

       var ggt = _cache.GetType();
           var _coherentStates = ggt.GetRuntimeFields(); 
            var keys = new List<string>();
            foreach (var f in _coherentStates)
            {
                if(f.Name == "_coherentState")
                {
                   var ftype = f.FieldType;
                    var ssss= ftype.GetRuntimeFields();
                   foreach(var ss in ssss)
                    {
                        if (ss.Name == "_entries")
                        {
                            var eee = ss.GetValue(f.GetValue(_cache));
                            if (eee != null)
                            { 
                                var cacheItems = eee as IDictionary;
                                if (cacheItems == null) return keys;
                                foreach (DictionaryEntry cacheItem in cacheItems)
                                {
                                    if (!string.IsNullOrEmpty(key))
                                    {
                                        if (cacheItem.Key.ToString().Contains(key))
                                        {
                                            keys.Add(cacheItem.Key.ToString());
                                        }
                                    }
                                    else
                                    {
                                        keys.Add(cacheItem.Key.ToString());
                                    }
                                }
                            }
                        }
                    }
                }
            }
         
            return keys;