Поделиться через


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, которая определяет сведения о типах данных 2 объекта, включая ссылки на один тип, реализующий службу DSRefBuilder для этих типов. После этого код, реализующий интерфейс IDSRefBuilder, как данные поддерживает объект. XML передает различные параметры для каждого типа, и реализация селектора отображает выделение 2 различных путей кода, в зависимости от параметров. Обратите внимание, что в более обычном случае значения параметров будут использоваться в более универсальной таким же способом, что код не будет языковые и региональные параметры определенных значений, например в случае передача параметров по другому 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 - пространство имен