Example #1
0
		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));
		}
Example #2
0
		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));
			}
		}
Example #3
0
		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));
			}
		}
Example #4
0
 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));
     }
 }
Example #5
0
        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++;
            }
        }
Example #6
0
        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));
                }
            }
        }