ServiceProvider Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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:
Bietet Zugriff auf das Native com-Dienstanbieter Objekt. Das Dienstanbieter Objekt kann verwendet werden, um andere Schnittstellen direkt abzufragen.
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. |