Search code examples
add-inmethodinfossms-2014

SSMS Addin - GetHierarchy Method Is NULL


I'm writing an addin for SSMS 2014. I want to get hierarchy for search an item in ObjectExplorer. But GetHierarchy method comes null. Does anyone have any ideas?

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

Solution

  • I found answer of my question. I accessed "Object Explorer Hierarchy" with the following code.

    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);
    }