Esempio n. 1
0
        // Finds the node associated with this member
        internal static MemberTreeNode FindMember(MemberInfo member)
        {
            Type     type = member.DeclaringType;
            Assembly assy = type.Assembly;

            AssemblyTreeNode assyNode =
                AssemblySupport.FindAssemblyNode(assy);

            if (assyNode == null)
            {
                return(null);
            }

            NamespaceTreeNode nameNode =
                assyNode.FindNamespace(type.Namespace);

            if (nameNode == null)
            {
                return(null);
            }

            TypeTreeNode typeNode =
                nameNode.FindType(type);

            if (typeNode == null)
            {
                return(null);
            }

            return(typeNode.FindMemberNode(member, !TypeTreeNode.FIND_NESTED));
        }
Esempio n. 2
0
		// Called when an assembly is actually loaded, here is where
		// we hook the type library information to it
		internal static void AssemblyLoadHandler(Assembly assy, AssemblyTreeNode node)
		{
			TraceUtil.WriteLineInfo(null, "COM Assembly loaded: " + assy.FullName);
			TypeLibrary.HandleAssyLoad(assy);
		}
Esempio n. 3
0
		internal static void CloseAssembly(AssemblyTreeNode node)
		{
			CloseAssembly(node.Assembly);
			if (node.TypeLib != null)
				node.TypeLib.Close();
		}
Esempio n. 4
0
		internal static AssemblyTreeNode AddAssy(Assembly assy, TypeLibrary typeLib)
		{
			// The assembly might have already been added (this can
			// happen when a previously converted [from com] assembly
			// is opened), if so,
			// find it and make sure the typeLib information is provided
			AssemblyTreeNode atNode = FindAssemblyNode(assy);
			if (atNode != null) {
				if (typeLib != null)
					atNode.TypeLib = typeLib;
				return atNode;
			}
			ICollection types = null;
			// Only get the types if the control tree is showing because
			// it can take a long time
			if (ComponentInspectorProperties.ShowControlPanel)
				types = GetAssyTypes(assy);
			AssemblyTreeNode node = new AssemblyTreeNode(assy, typeLib);
			if (_assyTree.InvokeRequired) {
				_assyTree.Invoke(new BrowserTreeNode.AddLogicalInvoker(_assyRootNode.AddLogicalNode), 
								new Object[] { node });
				_controlTree.Invoke(new ControlTree.AddAssyInvoker(ControlTree.AddAssy),
									new Object[] { assy, types });
			} else {
				_assyRootNode.AddLogicalNode(node);
				ControlTree.AddAssy(assy, types);
			}
			return node;
		}