private ClrInterface GetInterface(ICorDebug.IMetadataImport import, int mdIFace) { StringBuilder builder = new StringBuilder(1024); int extends, cnt; System.Reflection.TypeAttributes attr; int res = import.GetTypeDefProps(mdIFace, builder, builder.Capacity, out cnt, out attr, out extends); int scope; string name = null; ClrInterface result = null; if (res == 0) { name = builder.ToString(); } else if (res == 1) { res = import.GetTypeRefProps(mdIFace, out scope, builder, builder.Capacity, out cnt); if (res == 0) { name = builder.ToString(); } else if (res == 1) { } } // TODO: Handle typespec case. if (name != null && !DesktopHeap.Interfaces.TryGetValue(name, out result)) { ClrInterface type = null; if (extends != 0 && extends != 0x01000000) type = GetInterface(import, extends); result = new DesktopHeapInterface(name, type); DesktopHeap.Interfaces[name] = result; } return result; }