ServiceProvider Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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:
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.
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. |