ServiceProvider 类
用于管理的 Vspackage 提供统一的服务提供程序。
继承层次结构
System.Object
Microsoft.VisualStudio.Shell.ServiceProvider
命名空间: Microsoft.VisualStudio.Shell
程序集: Microsoft.VisualStudio.Shell.11.0(在 Microsoft.VisualStudio.Shell.11.0.dll 中)
语法
声明
<ComVisibleAttribute(True)> _
Public NotInheritable Class ServiceProvider _
Implements IServiceProvider, IDisposable, IObjectWithSite
[ComVisibleAttribute(true)]
public sealed class ServiceProvider : IServiceProvider,
IDisposable, IObjectWithSite
ServiceProvider 类型公开以下成员。
构造函数
名称 | 说明 | |
---|---|---|
ServiceProvider(IServiceProvider) | 初始化与现有 IServiceProvider 接口的实例。 | |
ServiceProvider(IServiceProvider, Boolean) | 初始化 ServiceProvider 类的新实例与现有 IServiceProvider 对象的和可选择将所有请求都 foundation 服务提供程序。 |
页首
属性
名称 | 说明 | |
---|---|---|
GlobalProvider | 获取调用的线程的全局服务提供程序。 |
页首
方法
名称 | 说明 | |
---|---|---|
CreateFromSetSite | 创建特定站点的新服务提供程序 (ssp)。 | |
Dispose | 释放由 ServiceProvider 对象使用的资源。 | |
Equals | 确定指定的对象是否等于当前对象。 (继承自 Object。) | |
GetHashCode | 用作特定类型的哈希函数。 (继承自 Object。) | |
GetService(Guid) | 从非托管服务提供程序中获取该项将指定的服务。 | |
GetService(Type) | gets 类型基于非托管服务提供程序的服务。 | |
GetType | 获取当前实例的 Type。 (继承自 Object。) | |
QueryService(Guid, Object%) | ||
QueryService(Type, Object%) | ||
ToString | 返回表示当前对象的字符串。 (继承自 Object。) |
页首
显式接口实现
名称 | 说明 | |
---|---|---|
IObjectWithSite.GetSite | 获取要解析服务的当前站点对象。 | |
IObjectWithSite.SetSite | 设置为解析服务的网站对象。 |
页首
备注
此类为托管 Vspackage 提供统一的服务提供程序。 它实现 IServiceProvider 并执行 IServiceProvider 实例作为构造函数参数。
此类支持 GUID 和类型基于外观。 它还检查常规本机实现 bug,例如不实现 IUnknown 接口或具有匹配的 SID。需要特定 IID 的对象。
此类在 .NET framework (也称为 “checked”版本) 的调试版本还提供调试支持。 设置为 TraceVerbose 的跟踪开关 TRACESERVICE 导致所有服务请求是输出到调试侦听器。
此外,在中,当向前服务请求对本机代码时, ServiceProvider 测试某些情况。 ,指定在解析的服务,但是,最本机的查询不时,托管代码需要 IUnknown 接口。 如果非托管服务不能通过 IUnknownIID 获取此外,在控件中与 IID 位置的 SID 的生成调用。 ServiceProvider 引发断言 SID 查询是否成功。
备注
返回一次成功的 SID 查询的结果在签入生成的在 VSPackage 中调试版本和零售生成产生不同的行为,因此,断言引发。
除了转换为 COM 服务提供程序的服务请求之外, ServiceProvider 类提供以下非可替换的服务:
提供对本机 COM 服务提供程序对象。 服务提供程序对象可用于为其他接口直接查询。
提供一种替换 COM 服务提供程序。 在 Visual Studio 中的多个地方对象是第一个给定的站点和之后另一种方法,本地化的站点。 该本地化的站点可以通过传递给服务提供程序的 IObjectWithSite 实现创建单个服务的联系人。 ( SetSite 方法将被忽略,如果站点不实现 IServiceProvider。)
线程安全
此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。