IVsDataSupportObject<T> 인터페이스
데이터 지원 XML 스트림에 제공 된 참조 정보를 기반으로 만들어진 개체를 나타냅니다.
네임스페이스: Microsoft.VisualStudio.Data.Core
어셈블리: Microsoft.VisualStudio.Data.Core(Microsoft.VisualStudio.Data.Core.dll)
구문
‘선언
Public Interface IVsDataSupportObject(Of T As Class)
public interface IVsDataSupportObject<T>
where T : class
generic<typename T>
where T : ref class
public interface class IVsDataSupportObject
type IVsDataSupportObject<'T when 'T : not struct> = interface end
JScript에서는 제네릭 형식이나 메서드를 지원하지 않습니다.
형식 매개 변수
- T
매개 변수의 형식입니다.
IVsDataSupportObject<T> 형식에서는 다음과 같은 멤버를 노출합니다.
메서드
이름 | 설명 | |
---|---|---|
Invoke | 추가 없습니다의 메서드 시그니처에 있는 매개 변수를 사용 하 여 개체의 메서드를 호출합니다. |
위쪽
설명
DDEX 아키텍처는 주로 데이터 확장성 개체 모델 또는 계층적 데이터 소스를 나타내는 등의 복잡 한 영역에 대 한 기반입니다. 이 위해서는 지원 엔터티는 호출자에 게 알려진된 스키마와 일치 하는 XML 스트림을 반환 하는 것이 목적인 만들었습니다. 호출자가이 XML을 해석 하 고 확장성의 해당 영역을 제어 하는 사용 하 여 합니다.
이 접근 방법의 일환으로 종종 XML 스트림을 다시 코드 형식으로 관리 되는 형식 이름에 대 한 참조가 포함 되어 있습니다. 사용 하는 XML 스트림의 소비자는 GetType 이러한 해결 방법 실제 형식으로 이름을 지정 하 고 다음 적절 하 게 이러한 형식의 인스턴스를 만듭니다. 형식 참조를 종종 주위의 XML 스키마 인스턴스를 같은 형식의 여러 상황에서 사용할 수 있도록 하는 전달 된 매개 변수 집합이 포함 되어 있습니다.
한이 실제로의 IVsDataObjectSelector 엔터티를 지원 합니다. 이 지원 엔터티 데이터 개체를 지 원하는 XML 스트림 데이터 원본 개체 형식, 테이블 또는 저장된 프로시저와 같은 정보를 지정 부분에서 참조 됩니다. 내부 식별자 형식의 개체를 나타내는 단일 매개 변수를 사용 하 여 검색 하는 선택기 구현을 작성할 수 및 다음 개체 지원에서 XML을 포함 시킬 각 형식에 대 한 선택기 참조에서이 매개 변수의 올바른 값입니다.
이러한 매개 변수를 전달 방법 지원 엔터티에 추가 메서드 또는 매개 변수가 있는이 시나리오를 사용 하려면 매개 변수를 추가할 필요 없이 사용할 수 있도록이 인터페이스의 용도입니다. 이 공급자의 구현에 의해 적절 하 게 처리 되는 런타임에 바인딩된 메서드 호출 방법을 사용 하 여 수행 됩니다. 단일 인터페이스 정의 Invoke 메서드 호출자에 게 전달 메서드를 호출 하려면 해당 인수를 일반 집합과 특수화 메서드의 동작은 매개 변수 집합의 이름입니다. 형식 매개 변수는 호출자에 따라 달라 집니다. 예를 들어, XML에서 매개 변수를 입력 하는 방법 및 이러한 매개 변수 구현에 전달 하는 매개 변수 개체 배열로 변환 합니다 방법을 정의 하는 데이터 개체 지원 XML 스키마에 달려 있습니다.
예제
다음 코드를 구현 하는 단일 형식에 대 한 참조를 포함 하 여 두 데이터 개체 형식에 대 한 정보를 정의 하는 데이터 개체 지원 XML 예제는 DSRefBuilder 이러한 형식에 대 한 서비스입니다. 다음 코드 구현 하는 IDSRefBuilder 인터페이스로 데이터 지원 개체입니다. XML 각 형식에 대해 다른 매개 변수를 전달 하 고 선택기 구현을 선택 된 매개 변수에 따라 두 개의 다른 코드 경로 보여 줍니다. 코드 작업을 수행 하는 다른 API에서 매개 변수를 전달할 경우 예를 들어 특정 값을 인식 하지 못하는 더 일반적인 경우에 매개 변수 값은 보다 일반적인 방식으로 사용 됩니다는 note입니다.
XML:
<Type name="Table">
<Identifier>
<Part name="Name" />
</Identifier>
<Properties>
<Property name="Id" type="System.Int32" />
</Properties>
<Services>
<Service type="IDSRefBuilder"
implementationType="MyDSRefBuilder">
<Parameters method="AppendToDSRef">
<Parameter value="DSREFTYPE_TABLE" />
</Parameters>
</Service>
</Services>
</Type>
<Type name="View">
<Identifier>
<Part name="Name" />
</Identifier>
<Properties>
<Property name="Id" type="System.Int32" />
</Properties>
<Services>
<Service type="IDSRefBuilder"
implementationType="MyDSRefBuilder">
<Parameters method="AppendToDSRef">
<Parameter value="DSREFTYPE_VIEW" />
</Parameters>
</Service>
</Services>
</Type>
using System;
using Microsoft.VisualStudio.Data.Core;
using Microsoft.VisualStudio.Data.Services.SupportEntities;
using Microsoft.VisualStudio.Data.Services.SupportEntities.Interop;
internal class MyDSRefBuilder : IDSRefBuilder,
IVsDataSupportObject<IDSRefBuilder>
{
public void AppendToDSRef(
object dsRef, string typeName, object[] identifier)
{
AppendToDSRef(dsRef, typeName, identifier, null);
}
object IVsDataSupportObject<IDSRefBuilder>.Invoke(
string name, object[] args, object[] parameters)
{
if (name == null)
{
throw new ArgumentNullException("name");
}
if (name.Equals("AppendToDSRef", StringComparison.Ordinal))
{
if (args == null || args.Length != 3)
{
throw new ArgumentException();
}
AppendToDSRef(args[0], args[1] as string,
args[2] as object[], parameters);
return null;
}
throw new ArgumentException();
}
private void AppendToDSRef(object dsRef,
string typeName, object[] identifier, object[] parameters)
{
if (parameters == null || parameters.Length == 0)
{
throw new ArgumentException();
}
string dsRefType = parameters[0] as string;
if (dsRefType.Equals("DSREFTYPE_TABLE"))
{
AppendTableToDSRef(dsRef, identifier);
}
else if (dsRefType.Equals("DSREFTYPE_VIEW"))
{
AppendViewToDSRef(dsRef, identifier);
}
}
private void AppendTableToDSRef(object dsRef, object[] identifier)
{
// Append table
}
private void AppendViewToDSRef(object dsRef, object[] identifier)
{
// Append view
}
}