다음을 통해 공유


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> 형식에서는 다음과 같은 멤버를 노출합니다.

메서드

  이름 설명
Public 메서드 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
    }
}

참고 항목

참조

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