void NativeMethods.IObjectWithSite.SetSite(object site) { this.site = site; if (site == null) { hierarchy = null; typeResolver = null; provider = null; return; } try { hierarchy = (IVsHierarchy)site; // Get the ITypeResolutionService from the hierarchy... // NativeMethods.IOleServiceProvider service; int hr = hierarchy.GetSite(out service); if (service != null) { provider = new ServiceProvider(service); ITypeResolutionServiceProvider resolver = (ITypeResolutionServiceProvider)provider.GetService(typeof(ITypeResolutionServiceProvider)); typeResolver = resolver.GetTypeResolutionService(hierarchy); } } catch (Exception e) { Debug.Fail("Failed to find the TypeResolver for the hierarchy... " + e.ToString()); } }
public override object GetService(Type serviceType) { if (serviceType == typeof(ITypeResolutionService)) { if (!checkedHierarchy) { checkedHierarchy = true; IVsHierarchy hier = (IVsHierarchy)base.GetService(typeof(IVsHierarchy)); if (hier != null) { ITypeResolutionServiceProvider provider = (ITypeResolutionServiceProvider)base.GetService(typeof(ITypeResolutionServiceProvider)); if (provider != null) { typeResolutionService = provider.GetTypeResolutionService(hier); } } } return(typeResolutionService); } return(base.GetService(serviceType)); }