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 | 解析特定組件的字串轉換成其對應的 Assembly 表示,的特定 DDEX 資料來源。 |
![]() |
GetType | 解決特定提供者型別名稱為其對應的 Type 表示,的特定 DDEX 資料來源。 |
回頁首
備註
DDEX 提供者包含一組 DDEX 用戶端可以用來叫用特定,已知動作的提供者特定行為的支援實體特定實作。 IVsDataProviderObjectFactory 介面的實作來建立這些支援實體執行個體。 當 DDEX 提供者支援多 DDEX 資料來源時,提供者 Object Factory 機制可擴充允許相同支援實體的不同實作根據目標的資料來源。
這項支援實體透過特定 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
{
}