internal static void AddBaseTypes(SharpTreeNodeCollection children, TypeReference type) { var def = type.Resolve(); if (def.BaseType != null) children.Add(new BaseTypesEntryNode(ResolveWithTypes(def.BaseType, type), false)); foreach (TypeReference i in def.Interfaces) children.Add(new BaseTypesEntryNode(ResolveWithTypes(i, type), true)); }
internal static void AddBaseTypes(SharpTreeNodeCollection children, TypeDefinition type) { if (type.BaseType != null) children.Add(new BaseTypesEntryNode(type.BaseType, false)); foreach (TypeReference i in type.Interfaces) { children.Add(new BaseTypesEntryNode(i, true)); } }
internal static void AddBaseTypes(SharpTreeNodeCollection children, TypeDef type) { if (type.BaseType != null) children.Add(new BaseTypesEntryNode(type.BaseType, false)); foreach (var i in type.Interfaces) { if (i.Interface != null) children.Add(new BaseTypesEntryNode(i.Interface, true)); } }
internal static void AddBaseTypes(SharpTreeNodeCollection children, TypeDefinition type) { if (type.BaseType != null) { children.Add(new BaseTypesEntryNode(type.BaseType, false)); } foreach (var i in type.Interfaces) { children.Add(new BaseTypesEntryNode(i.InterfaceType, true)); } }
internal static void AddBaseTypes(SharpTreeNodeCollection children, PEFile module, ITypeDefinition typeDefinition) { var typeDef = module.Metadata.GetTypeDefinition((TypeDefinitionHandle)typeDefinition.MetadataToken); var baseTypes = typeDefinition.DirectBaseTypes.ToArray(); int i = 0; if (typeDefinition.Kind == TypeKind.Interface) { i++; } else if (!typeDef.BaseType.IsNil) { children.Add(new BaseTypesEntryNode(module, typeDef.BaseType, baseTypes[i], false)); i++; } foreach (var h in typeDef.GetInterfaceImplementations()) { var impl = module.Metadata.GetInterfaceImplementation(h); children.Add(new BaseTypesEntryNode(module, impl.Interface, baseTypes[i], true)); i++; } }
internal static void AddBaseTypes(SharpTreeNodeCollection children, PEFile module, ITypeDefinition typeDefinition) { TypeDefinitionHandle handle = (TypeDefinitionHandle)typeDefinition.MetadataToken; DecompilerTypeSystem typeSystem = new DecompilerTypeSystem(module, module.GetAssemblyResolver(), TypeSystemOptions.Default | TypeSystemOptions.Uncached); var t = typeSystem.MainModule.ResolveEntity(handle) as ITypeDefinition; foreach (var td in t.GetAllBaseTypeDefinitions().Reverse().Skip(1)) { if (t.Kind != TypeKind.Interface || t.Kind == td.Kind) { children.Add(new BaseTypesEntryNode(td)); } } }