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