ServiceProvider Klasse

Definition

Stellt einen einheitlichen Dienstanbieter für verwaltete VSPackages bereit.

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
Vererbung
ServiceProvider
Attribute
Implementiert

Hinweise

Diese Klasse stellt einen einheitlichen Dienstanbieter für verwaltete VSPackages bereit. Es implementiert IServiceProvider und übernimmt eine Instanz von IServiceProvider als Konstruktorargument.

Diese Klasse unterstützt sowohl GUID-als auch typbasierte Suchvorgänge. Außerdem wird die Überprüfung auf gängige systemeigene Implementierungs Fehler, wie z. b. Objekte, die die- IUnknown Schnittstelle nicht implementieren oder die eine bestimmte IID erfordern, zusammen mit einer entsprechenden sid überprüft.

Diese Klasse bietet auch Debuggingunterstützung in der Debugversion des .NET Framework (auch bekannt als "überprüfte Version"). Wenn Sie den Ablauf Verfolgungs Schalter TRACESERVICE auf festlegen, TraceVerbose werden alle Dienst Anforderungen an den Debuglistener ausgegeben.

Außerdem testet bei ServiceProvider der Weiterleitung einer Service Request an systemeigenen Code bestimmte Bedingungen. Verwalteter Code erfordert IUnknown beim Auflösen von Diensten die-Schnittstelle, die meisten systemeigenen Abfragen jedoch nicht. Wenn ein nicht verwalteter Dienst nicht über eine IID von abgerufen werden kann IUnknown , wird ein zusätzlicher-Befehl in überprüften Builds mit der anstelle der IID verwendeten sid ausgeführt. ServiceProvider löst einen Assert aus, wenn die SID-Abfrage erfolgreich ist.

Hinweis

Wenn das Ergebnis einer erfolgreichen sid-Abfrage in einem überprüften Build zurückgegeben wird, führt dies zu einem anderen Verhalten in den Debug-und Retail-Builds des VSPackage, sodass stattdessen eine Assert-Abfrage ausgelöst wird.

Zusätzlich zur Übersetzung von Dienst Anforderungen an den com-Dienstanbieter ServiceProvider bietet die-Klasse die folgenden nicht ersetzbaren Dienste:

IServiceProvider

Bietet Zugriff auf das Native com-Dienstanbieter Objekt. Das Dienstanbieter Objekt kann verwendet werden, um andere Schnittstellen direkt abzufragen.

IObjectWithSite

Bietet eine Möglichkeit, den com-Dienstanbieter zu ersetzen. An vielen Stellen in Visual Studio wird ein Objekt zuerst eine Website und später eine weitere lokalisierte Website bereitgestellt. Die lokalisierte Site kann an die Implementierung des Dienstanbieters weitergeleitet werden IObjectWithSite , um einen einzelnen Kontaktpunkt für Dienste zu erstellen. (Die- SetSite Methode wird ignoriert, wenn die Site nicht implementiert IServiceProvider .)

Konstruktoren

ServiceProvider(IServiceProvider)

Initialisiert eine Instanz mit einer vorhandenen IServiceProvider-Schnittstelle.

ServiceProvider(IServiceProvider, Boolean)

Initialisiert eine neue Instanz der ServiceProvider-Klasse mit einem vorhandenen IServiceProvider-Objekt und übergibt optional alle Anforderungen an den zugrunde liegenden Dienstanbieter.

Eigenschaften

GlobalProvider

Ruft den globalen Dienstanbieter für den aufrufenden Thread ab.

Methoden

CreateFromSetSite(IServiceProvider)

Erstellen Sie einen neuen Dienstanbieter für die angegebene Website.

Dispose()

Gibt die vom ServiceProvider-Objekt verwendeten Ressourcen frei.

GetGlobalServiceAsync(Type)

Ruft einen globalen Dienst asynchron ab.

GetGlobalServiceAsync(Type, Boolean)

Ruft einen globalen Dienst asynchron ab.

GetGlobalServiceAsync<TService,TInterface>()

Ruft einen globalen Dienst asynchron ab.

GetGlobalServiceAsync<TService,TInterface>(Boolean)

Ruft einen globalen Dienst asynchron ab.

GetService(Guid)

Ruft den angegebenen Dienst vom nicht verwalteten Dienstanbieter ab.

GetService(Type)

Ruft die GUID-basierten Dienste des nicht verwalteten Dienstanbieters ab.

GetService(Type, Boolean)

Ruft den angeforderten Dienst ab.

QueryService(Guid, Object)

Ruft den angegebenen Dienst vom nicht verwalteten Dienstanbieter ab.

QueryService(Type, Object)

Ruft die GUID-basierten Dienste des nicht verwalteten Dienstanbieters ab.

Explizite Schnittstellenimplementierungen

IObjectWithSite.GetSite(Guid, IntPtr)

Ruft das aktuelle Site-Objekt zur Auflösung von Diensten ab.

IObjectWithSite.SetSite(Object)

Legt das Websiteobjekt zum Auflösen der Dienste fest.

Gilt für