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。

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 命名空间