.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,这是我的诊断工具。