コード例 #1
0
      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);
         });
      }
コード例 #2
0
 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;
    });
 }