列出AppDomain中存储的所有自定义数据为了存储出错时的进程状态,我想列出AppDomain中存储的所有自定义数据(custom)数据(通过设置数据)。LocalStore属性是私有的,不能由AppDomain类继承。有没有办法举这些数据?AppDomaindomain=AppDomain.CurrentDomain;domain.SetData("testKey","testValue");FieldInfo[]fieldInfoArr=domain.GetType().GetFields(BindingFlags.NonPublic|BindingFlags.Instance);foreach(FieldInfofieldInfoinfieldInfoArr){if(string.Compare(fieldInfo.Name,"_LocalStore",true)!=0)继续;对象值=fieldInfo.GetValue(domain);如果(!(值是字典))返回;DictionarylocalStore=(Dictionary)value;foreach(localStore中的varitem){Object[]values=(Object[])item.Value;foreach(varvalinvalues){if(val==null)continue;Console.WriteLine(item.Key+""+val.ToString());}}}基于Frank59的答案,但更简单:varappDomain=AppDomain.CurrentDomain;var标志=BindingFlags.NonPublic|BindingFlags.Instance;varfieldInfo=appDomain.GetType().GetField("_LocalStore",flags);如果(fieldInfo==null)返回;varlocalStore=fieldInfo.GetValue(appDomain)作为字典;如果(localStore==null)返回;前驱h(varkeyinlocalStore.Keys){varnonNullValues=localStore[key].Where(v=>v!=null);Console.WriteLine(key+":"+string.Join(",",nonNullValues));相同的解决方案,但作为F#扩展方法可能不需要null检查。https://gist.github.com/ctaggart/30555d3faf94b4d0ff98类型AppDomain与成员x.LocalStorewithget()=letf=x.GetType().GetField("_LocalStore",BindingFlags.NonPublicBindingFlags.Instance)iff=nullthenDictionary()elsef.GetValuex:?>DictionaryletprintAppDomainObjectCache()=forKeyValue(k,v)inAppDomain.CurrentDomain.LocalStoredoprintfn“%s”k以上是C#学习教程:列表存储在AppDomain中所有自定义数据分享的全部内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
