Exemple #1
0
        /// <summary>
        /// Gets the selected items of a given item container in the VS hierarchy
        /// </summary>
        public static IEnumerable <IItemContainer> GetSelection(this IItemContainer itemContainer)
        {
            Guard.NotNull(() => itemContainer, itemContainer);

            var solution    = itemContainer.GetSolution();
            var dteSolution = solution.As <EnvDTE.Solution>();

            var selectedItems     = dteSolution.DTE.SelectedItems.Cast <EnvDTE.SelectedItem>();
            var allHierarchyItems = itemContainer.Traverse().Concat(new[] { itemContainer }).OfType <HierarchyItem>();

            // return allHierarchyItems.Where(item => selectedItems.Any(selected => GetSelectedItemObject(selected) == item.ExtenderObject));
            return(selectedItems.Select(selected => allHierarchyItems.FirstOrDefault(item => item.ExtenderObject == GetSelectedItemObject(selected))).Where(e => e != null));
        }