다음을 통해 공유


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에서는 제네릭 형식이나 메서드를 지원하지 않습니다.

Type 매개 변수

  • T
    매개 변수의 형식입니다.

IVsDataSupportObject<T> 형식에서는 다음과 같은 멤버를 노출합니다.

메서드

  이름 설명
Public 메서드 Invoke 추가 없습니다의 메서드 시그니처에 있는 매개 변수를 사용 하 여 개체에서 메서드를 호출 합니다.

위쪽

설명

DDEX 아키텍처는 주로 데이터 확장성 개체 모델 또는 계층적 데이터 소스를 나타내는 등의 복잡 한 영역에 대 한 기반입니다.이 위해 지원 엔터티는 호출자에 게 알려진된 스키마와 일치 하는 XML 스트림을 반환 하는 것이 목적인 만들었습니다.호출자에 게이 XML이 해석 하 고 확장성의 영역을 제어 하는 사용 하 여.

이 접근 방법의 일환으로 XML 스트림을 자주 참조를 코드 형식으로 관리 되는 형식 이름에 포함 되어 있습니다.스트림의 XML 사용의 소비자는 GetType 이러한 해결 방법 실제 형식에 이름을 지정 하 고 다음 적절 하 게 이러한 형식의 인스턴스를 만듭니다.형식 참조는 주위의 XML 스키마 인스턴스를 같은 형식의 여러 상황에서 사용할 수 있도록 하는 전달 된 매개 변수 집합이 포함 되어 있습니다.

적용에서 한 예로 들 수 있는 IVsDataObjectSelector 엔터티를 지원 합니다.이 지원 엔터티 테이블 또는 저장된 프로시저와 같은 데이터 원본 개체 형식에 대 한 정보를 지정한 데이터 개체 지원 XML 스트림 부분에서 참조 됩니다.개체 유형의 기본 식별자를 나타내는 단일 매개 변수를 사용 하 여 검색 하는 선택기 구현을 작성할 수 및 다음 개체 지원 XML을 포함 시킬 각 형식에 대 한 선택기 참조에서이 매개 변수의 올바른 값입니다.

이 인터페이스의 메서드를 추가 하거나 사용할 수 있도록 매개 변수가 있는 경우가 매개 변수를 추가 하지 않고도 지원 엔터티 메서드에 이러한 매개 변수를 전달 수 있도록입니다.이 공급자의 구현에 의해 적절 하 게 처리 되는 런타임에 바인딩된 메서드 호출 방법을 사용 하 여 수행 됩니다.단일 인터페이스 정의 Invoke 메서드 호출자에 메서드를 호출 하려면 해당 인수를 일반 집합과 메서드의 동작을 전문으로 하는 매개 변수 집합의 이름을 전달 합니다.매개 변수는 호출자에 따라 달라 집니다.예를 들어, 최대 데이터 개체 지원 XML 스키마를 XML에서 매개 변수를 입력 하는 방법 및 이러한 매개 변수 개체 구현에 전달 된 매개 변수 배열 변환 합니다 방법을 정의할 수 있습니다.

예제

다음 코드는 단일 구현 하는 형식에 대 한 참조를 포함 하 여 두 데이터 개체 형식에 대 한 정보를 정의 하는 데이터 개체 지원 XML의 예제는 DSRefBuilder 이러한 형식에 대 한 서비스.다음 코드 구현 하는 IDSRefBuilder 인터페이스로 데이터 지원 개체.XML의 각 형식에 대해 다른 매개 변수를 전달 하 고 선택기 구현을 선택 된 매개 변수에 따라 두 개의 다른 코드 경로를 보여 줍니다.Note 코드 전달 매개 변수 전달 작업을 수행 하는 다른 API의 경우 예를 들어 특정 값으로 인식 되지 않도록 더 일반적인 경우에 매개 변수 값 보다 일반적인 방식으로 사용할 것입니다.

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
    }
}

참고 항목

참조

Microsoft.VisualStudio.Data.Core 네임스페이스