ServiceProvider Classe

Definição

Fornece um provedor de serviços unificado para VSPackages gerenciados.

public ref class ServiceProvider sealed : IDisposable, IServiceProvider, Microsoft::VisualStudio::OLE::Interop::IObjectWithSite
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class ServiceProvider : IDisposable, IServiceProvider, Microsoft.VisualStudio.OLE.Interop.IObjectWithSite
[<System.Runtime.InteropServices.ComVisible(true)>]
type ServiceProvider = class
    interface IServiceProvider
    interface IDisposable
    interface IObjectWithSite
Public NotInheritable Class ServiceProvider
Implements IDisposable, IObjectWithSite, IServiceProvider
Herança
ServiceProvider
Atributos
Implementações

Comentários

Essa classe fornece um provedor de serviços unificados para VSPackages gerenciados. Ele implementa IServiceProvider e usa uma instância do IServiceProvider como um argumento de construtor.

Essa classe dá suporte a pesquisas baseadas em GUID e tipo. Ele também verifica se há armadilhas comuns de implementação nativa, como objetos que não implementam a IUnknown interface ou que exigem um IID específico junto com um SID correspondente.

Essa classe também fornece suporte à depuração na versão de depuração do .NET Framework (também conhecido como uma versão "verificada"). Definir a opção de rastreamento TRACESERVICE para TraceVerbose faz com que todas as solicitações de serviço sejam geradas para o ouvinte de depuração.

Além disso, os ServiceProvider testes para determinadas condições ao encaminhar uma solicitação de serviço para o código nativo. O código gerenciado requer a IUnknown interface ao resolver serviços, mas a maioria das consultas nativas não. Se um serviço não gerenciado não puder ser obtido por meio de um IID de IUnknown , será feita uma chamada adicional em compilações marcadas com o Sid usado no lugar do IID. ServiceProvider gera uma declaração se a consulta de SID for realizada com sucesso.

Observação

Retornar o resultado de uma consulta de SID bem-sucedida em uma compilação verificada causa um comportamento diferente nas compilações de depuração e de varejo do VSPackage, portanto, um Assert é gerado em vez disso.

Além de traduzir as solicitações de serviço para o provedor de serviços COM, a ServiceProvider classe oferece os seguintes serviços não substituíveis:

IServiceProvider

Fornece acesso ao objeto de provedor de serviço COM nativo. O objeto de provedor de serviço pode ser usado para consultar diretamente outras interfaces.

IObjectWithSite

Fornece uma maneira de substituir o provedor de serviços COM. Em muitos lugares do Visual Studio, um objeto recebe primeiro um site e, mais tarde, outro site localizado. O site mais localizado pode ser passado para a implementação do provedor de serviços IObjectWithSite para criar um único ponto de contato para serviços. (O SetSite método será ignorado se o site não for implementado IServiceProvider .)

Construtores

ServiceProvider(IServiceProvider)

Inicializa uma instância com uma IServiceProvider interface existente.

ServiceProvider(IServiceProvider, Boolean)

Inicializa uma nova instância da ServiceProvider classe com um objeto existente IServiceProvider e, opcionalmente, passa todas as solicitações para o provedor de serviços subjacente.

Propriedades

GlobalProvider

Obtém o provedor de serviços global para o thread de chamada.

Métodos

CreateFromSetSite(IServiceProvider)

Crie um novo ServiceProvider para o site especificado.

Dispose()

Libera os recursos usados pelo objeto ServiceProvider.

GetGlobalServiceAsync(Type)

Obtém um serviço global de forma assíncrona.

GetGlobalServiceAsync(Type, Boolean)

Obtém um serviço global de forma assíncrona.

GetGlobalServiceAsync<TService,TInterface>()

Obtém um serviço global de forma assíncrona.

GetGlobalServiceAsync<TService,TInterface>(Boolean)

Obtém um serviço global de forma assíncrona.

GetService(Guid)

Obtém o serviço especificado do provedor de serviços não gerenciado.

GetService(Type)

Obtém serviços baseados em tipo do provedor de serviços não gerenciado.

GetService(Type, Boolean)

Recupera o serviço solicitado.

QueryService(Guid, Object)

Obtém o serviço especificado do provedor de serviços não gerenciado.

QueryService(Type, Object)

Obtém serviços baseados em tipo do provedor de serviços não gerenciado.

Implantações explícitas de interface

IObjectWithSite.GetSite(Guid, IntPtr)

Obtém o objeto do site atual para resolver serviços.

IObjectWithSite.SetSite(Object)

Define o objeto de site que resolverá serviços.

Aplica-se a