Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 使用反射枚举指定类型的所有对象_.net_Reflection - Fatal编程技术网

.net 使用反射枚举指定类型的所有对象

.net 使用反射枚举指定类型的所有对象,.net,reflection,.net,Reflection,如何使用反射枚举流程中的所有对象(指定类型)?试试这个 if (list is System.Collections.IEnumerable) { foreach (object obj in (list as System.Collections.IEnumerable)) { } } } 解决方案是使用Microsoft.Diagnostics.Runtime库 例如: int pid = Process.

如何使用反射枚举流程中的所有对象(指定类型)?

试试这个

if (list is System.Collections.IEnumerable)
{                      
  foreach (object obj in (list as System.Collections.IEnumerable))
  {

  }    
 }    
}

解决方案是使用Microsoft.Diagnostics.Runtime库
例如:

    int pid = Process.GetProcessesByName("HelloWorld")[0].Id;
    using (DataTarget dataTarget = DataTarget.AttachToProcess(pid, 5000))
    {
        string dacLocation = dataTarget.ClrVersions[0].TryGetDacLocation();
        ClrRuntime runtime = dataTarget.CreateRuntime(dacLocation);

        ClrHeap heap = runtime.GetHeap();
        foreach (ulong obj in heap.EnumerateObjects())
        {
            ClrType type = heap.GetObjectType(obj);
            ulong size = type.GetSize(obj);
            Console.WriteLine("{0,12:X} {1,8:n0} {2}", obj, size, type.Name);
        }
    }

你为什么需要它?@zerkms,这是我的诊断工具。