2015-12-28 13 views
0

Я пишу addin для SSMS 2014. Я хочу получить иерархию для поиска элемента в ObjectExplorer. Но метод GetHierarchy имеет значение null. У кого-нибудь есть идеи?SSMS Addin - метод GetHierarchy NULL

ObjectExplorerService objExplorerService = (ObjectExplorerService)ServiceCache.ServiceProvider.GetService(typeof(IObjectExplorerService)); 
MethodInfo getHierarchyMethod = objExplorerService.GetType().GetMethod("GetHierarchy", BindingFlags.Instance | BindingFlags.NonPublic); 

ответ

2

Я нашел ответ на свой вопрос. Я обратился к «Иерархии проводника объектов» со следующим кодом.

List<IExplorerHierarchy> hierarchyList = new List<IExplorerHierarchy>(); 
ObjectExplorerService objExplorerService = (ObjectExplorerService)ServiceCache.ServiceProvider.GetService(typeof(IObjectExplorerService)); 
System.Type t = objExplorerService.GetType(); 

PropertyInfo getHierarchyMethod = t.GetProperty("Tree", BindingFlags.Instance | BindingFlags.NonPublic); 
var value = getHierarchyMethod.GetValue(objExplorerService, null); 

PropertyInfo getHierarchyMethod2s = value.GetType().GetProperty("Hierarchies", BindingFlags.Instance | BindingFlags.NonPublic); 
var value2 = getHierarchyMethod2s.GetValue(value, null); 

foreach (var item in (Dictionary<string, IExplorerHierarchy>)value2) 
{ 
    hierarchyList.Add(item.Value); 
}