public SolutionExplorerNode(SolutionExplorerNodeKind kind, VsSolutionHierarchyNode hierarchyNode, Lazy<ISolutionExplorerNode> parentNode, ISolutionExplorerNodeFactory nodeFactory) { if (nodeFactory == null) throw new ArgumentNullException(nameof(nodeFactory), $"{nameof(nodeFactory)} is null."); if (hierarchyNode == null) throw new ArgumentNullException(nameof(hierarchyNode), $"{nameof(hierarchyNode)} is null."); Kind = kind; NodeFactory = nodeFactory; m_hierarchyNode = hierarchyNode; m_window = new Lazy<IVsUIHierarchyWindow>(() => GetWindow(hierarchyNode.ServiceProvider)); m_parent = parentNode ?? new Lazy<ISolutionExplorerNode>(() => null); Func<bool> getHiddenProperty = () => hierarchyNode.VsHierarchy.GetProperty<bool?>(__VSHPROPID.VSHPROPID_IsHiddenItem, m_hierarchyNode.ItemId).GetValueOrDefault(); m_isHidden = parentNode != null ? new Lazy<bool>(() => getHiddenProperty() || parentNode.Value.IsHidden) : new Lazy<bool>(() => getHiddenProperty()); m_solutionNode = new Lazy<ISolutionNode>(() => { var solutionHierarchy = new VsSolutionHierarchyNode( (IVsHierarchy)m_hierarchyNode.ServiceProvider.GetService<SVsSolution, IVsSolution>(), VSConstants.VSITEMID_ROOT); return new SolutionNode(solutionHierarchy, NodeFactory); }); }
public ProjectItemNode(SolutionExplorerNodeKind kind, VsSolutionHierarchyNode hierarchyNode, Lazy<ISolutionExplorerNode> parent, ISolutionExplorerNodeFactory nodeFactory) : base(kind, hierarchyNode, parent, nodeFactory) { m_parentProject = new Lazy<IProjectNode>(() => { VsSolutionHierarchyNode parentProjectHierarchy = new VsSolutionHierarchyNode(hierarchyNode.VsHierarchy, VSConstants.VSITEMID_ROOT); return NodeFactory.Create(parentProjectHierarchy, GetParent(parentProjectHierarchy)) as IProjectNode; }); }