列出存储在AppDomain中的所有自定义数据

Pie*_*run 8 c# appdomain

为了在发生错误时存储进程状态,我想列出存储在AppDomain中的所有(自定义)数据(通过SetData).LocalStore属性是私有的,AppDomain类不可继承.有没有办法枚举这些数据?

Fra*_*k59 7

        AppDomain domain = AppDomain.CurrentDomain;
        domain.SetData("testKey", "testValue");

        FieldInfo[] fieldInfoArr = domain.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance);
        foreach (FieldInfo fieldInfo in fieldInfoArr)
        {

            if (string.Compare(fieldInfo.Name, "_LocalStore", true) != 0)
                continue;
            Object value = fieldInfo.GetValue(domain);
            if (!(value is Dictionary<string,object[]>))
                return;
            Dictionary<string, object[]> localStore = (Dictionary<string, object[]>)value;
            foreach (var item in localStore)
            {
                Object[] values = (Object[])item.Value;
                foreach (var val in values)
                {
                    if (val == null)
                        continue;
                    Console.WriteLine(item.Key + " " + val.ToString());
                }
            }


        }
Run Code Online (Sandbox Code Playgroud)