public void Build(string projectName, Type[] types) { _treeVM = new TreeItemVM(projectName, null); foreach (Type referencedType in types) { TreeItemVM membersTree = GetClassTreeVM(referencedType); membersTree.Parent = _treeVM; _treeVM.Children.Add(membersTree); } }
/// <summary> /// This function is the callback used to execute a command when the a menu item is clicked. /// See the Initialize method to see how the menu item is associated to this function using /// the OleMenuCommandService service and the MenuCommand class. /// </summary> private void MenuItemCallback(object sender, EventArgs e) { DTE2 dte = (DTE2)GetService(typeof(SDTE)); ProjectLoader projectLoader = new ProjectLoader(dte); IViewBuilder treeNodeBuilder = new TreeNodeBuilder(); treeNodeBuilder.Build(dte.ActiveDocument.ProjectItem.ContainingProject.Name, WizardResources.ReflectedTypes); TreeItemVM tree = treeNodeBuilder.GetTreeVM(); WizardResources.MainWPF = new MainWindow(); var scopeVM = new ScopeFormVM(tree); WizardResources.MainWPF.DataContext = new MainWindowVM(scopeVM); WizardResources.MainWPF.Show(); }
private static TreeItemVM GetClassTreeVM(Type referencedType) { TreeItemVM membersTreeNode = new TreeItemVM(referencedType.Name, null); if (referencedType.IsClass) { MethodInfo[] methods = referencedType.GetMethods(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly); foreach (MethodInfo method in methods) { membersTreeNode.Children.Add(new TreeItemVM(method.Name, membersTreeNode, method)); } } else { Type[] types = referencedType.GetNestedTypes(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly); foreach (Type type in types) { membersTreeNode.Children.Add(new TreeItemVM(type.Name, membersTreeNode)); } } return(membersTreeNode); }