ServiceProvider Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет унифицированного поставщика услуг для управляемых пакетов VSPackages.
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
- Наследование
-
ServiceProvider
- Атрибуты
- Реализации
Комментарии
Этот класс предоставляет унифицированный поставщик служб для управляемых пакетов VSPackage. Он реализует IServiceProvider и принимает экземпляр IServiceProvider в качестве аргумента конструктора.
Этот класс поддерживает как GUID, так и поиск на основе типов. Он также проверяет распространенные ошибки реализации в машинном коде, такие как объекты, не реализующие IUnknown интерфейс, или требующие определенного идентификатора IID вместе с соответствующим идентификатором безопасности.
Этот класс также обеспечивает поддержку отладки в отладочной версии платформа .NET Framework (также известной как "проверенная версия"). Установка переключателя трассировки TRACESERVICE в значение TraceVerbose приводит к тому, что все запросы службы будут выводиться в прослушиватель отладки.
Кроме того, ServiceProvider проверяет наличие определенных условий при пересылке запроса на обслуживание в машинный код. IUnknownПри разрешении служб для управляемого кода требуется интерфейс, но в большинстве машинных запросов это не так. Если неуправляемая служба не может быть получена через IID, то IUnknown дополнительный вызов выполняется в проверенных сборках с идентификатором безопасности, используемым вместо IID. ServiceProvider вызывает Assert, если запрос SID выполнен.
Примечание
Возврат результата успешного запроса SID в проверенной сборке приводит к другому поведению в отладочной и коммерческой сборках VSPackage, поэтому вместо этого создается утверждение.
Помимо перевода запросов на обслуживание в поставщик служб COM, ServiceProvider класс предлагает следующие незаменяемые службы:
Предоставляет доступ к объекту поставщика службы COM Native. Объект поставщика услуг можно использовать для прямого запроса других интерфейсов.
Предоставляет способ замены поставщика служб COM. Во многих местах в Visual Studio объект сначала получает один сайт и более поздний локализованный сайт. Более локализованный сайт можно передать в реализацию поставщика услуг, IObjectWithSite чтобы создать единую точку контакта для служб. ( SetSite Метод игнорируется, если сайт не реализует IServiceProvider .)
Конструкторы
| ServiceProvider(IServiceProvider) |
Инициализирует экземпляр с существующим интерфейсом IServiceProvider. |
| ServiceProvider(IServiceProvider, Boolean) |
Инициализирует новый экземпляр класса ServiceProvider с существующим объектом IServiceProvider и, при необходимости, передает все запросы к основному поставщику услуг. |
Свойства
| GlobalProvider |
Получает глобальный поставщик служб для вызывающего потока. |
Методы
| CreateFromSetSite(IServiceProvider) |
Создает новый ServiceProvider для данного сайта. |
| Dispose() |
Освобождает ресурсы, используемые объектом ServiceProvider. |
| GetGlobalServiceAsync(Type) |
Возвращает глобальную службу асинхронно. |
| GetGlobalServiceAsync(Type, Boolean) |
Возвращает глобальную службу асинхронно. |
| GetGlobalServiceAsync<TService,TInterface>() |
Возвращает глобальную службу асинхронно. |
| GetGlobalServiceAsync<TService,TInterface>(Boolean) |
Возвращает глобальную службу асинхронно. |
| GetService(Guid) |
Получает указанную службу из неуправляемого поставщика служб. |
| GetService(Type) |
Получает службы на основе типа из неуправляемого поставщика служб. |
| GetService(Type, Boolean) |
Извлекает запрошенную службу. |
| QueryService(Guid, Object) |
Получает указанную службу из неуправляемого поставщика служб. |
| QueryService(Type, Object) |
Получает службы на основе типа из неуправляемого поставщика служб. |
Явные реализации интерфейса
| IObjectWithSite.GetSite(Guid, IntPtr) |
Получает текущий объект сайта для разрешения служб. |
| IObjectWithSite.SetSite(Object) |
Задает объект сайта, распознающий службу. |