public static InterfaceType CreateSitedInstance <InterfaceType>(this Microsoft.VisualStudio.OLE.Interop.IServiceProvider serviceProvider, Guid clsid)
            where InterfaceType : class
        {
            InterfaceType interfaceType;

            using (ServiceProvider serviceProvider1 = new ServiceProvider(serviceProvider))
            {
                interfaceType = OleServiceProviderExtensions.CreateSitedInstance <InterfaceType>(serviceProvider1, clsid);
            }
            return(interfaceType);
        }
        internal static InterfaceType CreateSitedInstance <InterfaceType>(System.IServiceProvider serviceProvider, Guid clsid)
            where InterfaceType : class
        {
            InterfaceType interfaceType = OleServiceProviderExtensions.CreateInstance <InterfaceType>(serviceProvider, clsid);

            if (interfaceType != null)
            {
                IObjectWithSite objectWithSite = (object)interfaceType as IObjectWithSite;
                Microsoft.VisualStudio.OLE.Interop.IServiceProvider service = serviceProvider.GetService <Microsoft.VisualStudio.OLE.Interop.IServiceProvider>();
                if (objectWithSite == null || service == null)
                {
                    interfaceType = default(InterfaceType);
                }
                else
                {
                    objectWithSite.SetSite(service);
                }
            }
            return(interfaceType);
        }