会提供专用实现支持基于数据连接字符串的特定数据源的实体的DDEX提供程序。
命名空间: Microsoft.VisualStudio.Data.Core
程序集: Microsoft.VisualStudio.Data.Core(在 Microsoft.VisualStudio.Data.Core.dll 中)
语法
声明
Public Interface IVsDataSourceSpecializer
public interface IVsDataSourceSpecializer
public interface class IVsDataSourceSpecializer
type IVsDataSourceSpecializer = interface end
public interface IVsDataSourceSpecializer
IVsDataSourceSpecializer 类型公开以下成员。
方法
名称 | 说明 | |
---|---|---|
![]() |
CreateObject | 创建指定的DDEX的实例支持由特定DDEX数据源的DDEX提供程序实现的实体。 |
![]() |
DeriveSource | 从DDEX提供程序特定的数据连接字符串派生一个DDEX数据源,如果可能。 |
![]() |
GetAssembly | 解析一个提供程序特定的程序集字符串与其对应的 Assembly 表示,的特定DDEX数据源。 |
![]() |
GetType | 解析一个提供程序特定的类型名称与其对应的 Type 表示,的特定DDEX数据源。 |
页首
备注
DDEX提供程序包括设置DDEX的特定实现支持可供客户端用于调用特定,已知的事件的提供程序特定的行为的实体。IVsDataProviderObjectFactory 接口的实现用于创建这些实例支持实体。当DDEX提供程序支持多个DDEX数据源时,提供程序对象工厂结构可以扩展允许相同的不同实现基于目标的数据源支持实体。
这支持实体采用特定DDEX数据源标识符启用此类型的扩展作为一个参数,在创建支持实体时。它还使一个DDEX数据源从派生的标识目标数据源的数据连接字符串的,因此,客户端可以确定最初计划的DDEX数据源。此外,它表示您使用时使用可使用支持实体指定此信息作为字符串的特定DDEX数据源的自定义类型和程序集决策。
DDEX提供程序可实现此隐式或显式支持实体。一个隐式实现时,会发生DDEX提供程序是基于的注册表,以及接口的内置实现了解描述不同支持每个数据源的实体实现的各种注册表项。显式实现时,会发生DDEX提供程序是基于的包,或者,当它是注册表根据与规范如何创建支持实体添加到注册表中。前者是敏捷的;后者只支持简单情况下,但是最for agile。DDEX提供程序必须决定采用哪种方法,当实现数据源专用化时。
示例
下面的代码演示DDEX提供程序可以如何实现 IVsDataSourceSpecializer 接口使用标准的多个实现支持对实体。它还显示基于简单的连接字符串格式 DeriveSource 方法的一个可能的实现。它使用在DDEX framework程序集中定义接口的基实现。
using System;
using Microsoft.VisualStudio.Data.Core;
using Microsoft.VisualStudio.Data.Framework;
using Microsoft.VisualStudio.Data.Services.SupportEntities;
internal class MySourceSpecializer : DataSourceSpecializer
{
private static readonly Guid Source1Guid =
new Guid("A871863D-7D71-4e49-A8C5-4E959DDE7AF7");
private static readonly Guid Source2Guid =
new Guid("D79D7D55-A266-4db9-92A9-3FDBA5D6A722");
public override Guid DeriveSource(string connectionString)
{
if (connectionString.StartsWith("Source1"))
{
return Source1Guid;
}
if (connectionString.StartsWith("Source2"))
{
return Source2Guid;
}
return base.DeriveSource(connectionString);
}
public override object CreateObject(Guid source, Type objType)
{
if (objType == null)
{
throw new ArgumentNullException("objType");
}
if (objType == typeof(IVsDataConnectionProperties))
{
if (source == Source1Guid)
{
return new MySource1ConnectionProperties();
}
if (source == Source2Guid)
{
return new MySource2ConnectionProperties();
}
}
return base.CreateObject(source, objType);
}
}
internal class MySource1ConnectionProperties : DataConnectionProperties
{
}
internal class MySource2ConnectionProperties : DataConnectionProperties
{
}