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 데이터 소스를 지 원하는 경우 공급자 개체 팩터리 메커니즘 지원 같은 엔터티 대상이 되는 데이터 소스에 따라 다른 구현이 가능 하도록 확장할 수 있습니다.
이 지원 엔터티 특정 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
{
}