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());
            }
        }
Ejemplo n.º 2
0
            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));
            }