jak uzyskać wybrany obiekt węzła połączenia w oknie VS Server Explorer DDEX

Dodałem kilka opcji węzła połączenia w eksploratorze serwera dla mojego rozszerzenia VS. Dla jednej z opcji menu, które dodałem, muszę uzyskać ciąg połączenia bardzo wybranego połączenia, więc spróbowałem tego, dodając kod w zdarzeniu BeforeQueryStatus, a także w metodzie obsługi poleceń. Ale wygląda na to, że brakuje mi czegoś, ponieważ za każdym razem, gdy chcę uzyskać wystąpienie DataViewHierarchyAccessor, zawsze otrzymuję wartość null. Chociaż jeśli robię to samo, ale w węźle niższego poziomu działa dobrze. Użyłem następującego kodu bez powodzenia:

IVsDataExplorerNodeSelection nodeSelection = (IVsDataExplorerNodeSelection) Package.GetGlobalService (typeof (IVsDataExplorerNodeSelection));

IVsUIHierarchy hierarchy = Marshal.GetTypedObjectForIUnknown (hierarchyPtr, typeof (IVsUIHierarchy)) jako IVsUIHierarchy;

Czy ktoś zrobił coś podobnego w węźle połączenia okna Eksploratora serwera?

Aktualizacja:

Wygląda na to, że mam pewne postępy w tym zakresie, właśnie spróbowałem:

EnvDTE80.DTE2 _applicationObject = GetDTE2();
UIHierarchy uih = _applicationObject.ToolWindows.GetToolWindow("Server Explorer") as UIHierarchy;
Array selectedItems = (Array)uih.SelectedItems;
if (null != selectedItems)
    {
        foreach (UIHierarchyItem selItem in selectedItems)
        {
            SelectedItem prjItem = selItem.Object as EnvDTE.SelectedItem;
            string name = prjItem.Name;
        }
    }

Teraz moje pytanie brzmi: czy jest lepszy typ do rzucania listy wybranych elementów? zamiast EnvDTE.SelectedItem.

Z góry dziękuję.

questionAnswers(1)

yourAnswerToTheQuestion