// 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)); }
// 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); }
internal static void CloseAssembly(AssemblyTreeNode node) { CloseAssembly(node.Assembly); if (node.TypeLib != null) node.TypeLib.Close(); }
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; }