IVsDataSourceSpecializer インターフェイス
データ接続文字列に基づいて特定のデータ ソースのサポートのエンティティの 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 | 特定の DDEX のデータ ソースの Assembly の対応する表示に、プロバイダー固有のアセンブリの文字列を解決します。 | |
GetType | 特定の DDEX のデータ ソースの Type の対応する表示に、プロバイダー固有の型名を解決します。 |
このページのトップへ
解説
DDEX プロバイダーは、個々、既知のアクションのプロバイダー固有の動作を呼び出すためにクライアントで使用できる DDEX のサポートのエンティティの特定の実装で構成されます。 IVsDataProviderObjectFactory のインターフェイスの実装がそのエンティティのインスタンスを作成するために使用されます。 DDEX プロバイダーが DDEX 複数のデータ ソースをサポートする場合、プロバイダー オブジェクト ファクトリの機構を対象としたデータ ソースで同じサポートのエンティティの異なる実装を許可するように拡張できます。
このサポートのエンティティは追加のパラメーターとして特定の DDEX のデータ ソースの識別子の使用によってサポートのエンティティを作成すると、この拡張機能の種類を有効にします。 また、対象のデータ ソースを識別するため、クライアントは最初に目的の DDEX のデータ ソースを確認するには、データ接続文字列から DDEX のデータ ソースの派生を有効にします。 また、使用できる特定の DDEX のデータ ソースのカスタム型およびアセンブリの解決を表し、文字列としてこの情報を指定するサポートのエンティティを使用する。
DDEX プロバイダーはこのサポートのエンティティを暗黙的または明示的に実装する場合があります。 暗黙の実装は DDEX プロバイダーがレジストリ ベースであり、インターフェイスの組み込み実装が各データ ソースの異なるサポートのエンティティ実装を記述するさまざまなレジストリ キーを読み取るときに発生します。 明示的な実装は DDEX プロバイダーに基づいてパッケージの場合、またはレジストリに追加サポートのエンティティを作成する方法、の仕様に基づいてレジストリの場合に発生します。 以前は、;。後のサポートの単純な状態のみただし、アジャイルです。 DDEX のプロバイダーは、データ ソースの特殊化を実行するときに使用する方法を決定する必要があります。
例
次のコードは DDEX プロバイダーが標準のサポートのエンティティの複数の実装のサポートを含む IVsDataSourceSpecializer のインターフェイスを実装するかを示します。 また、単純な接続文字列の書式に基づく DeriveSource のメソッドの可能な実装を示しています。 これは DDEX フレームワークのアセンブリで定義されているインターフェイスの基本実装を使用します。
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
{
}