Sdílet prostřednictvím


IVsDataSupportObject<T> – rozhraní

Představuje objekt, který byl vytvořen na základě referenčních informací zadaných v datovém proudu XML podpory.

Obor názvů:  Microsoft.VisualStudio.Data.Core
Sestavení:  Microsoft.VisualStudio.Data.Core (v Microsoft.VisualStudio.Data.Core.dll)

Syntaxe

'Deklarace
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
Jazyk JScript nepodporuje obecné typy a metody.

Parametry typu

  • T
    Typ parametru.

Typ IVsDataSupportObject<T> zveřejňuje následující členy.

Metody

  Název Popis
Veřejná metoda Invoke Vyvolá metodu objektu s další parametry, které se nenachází ve podpis metody.

Nahoru

Poznámky

Architektura DDEX je především data úsilím pro složité oblasti rozšiřitelnosti jako představující zdroj dat objektového modelu nebo hierarchicky.K dosažení tohoto cíle byla vytvořena podpora entity jejichž účelem je vrátit proudu XML odpovídající známé schéma volajícímu.Volající pak interpretuje toto XML a používá k řízení této oblasti rozšiřitelnost.

Jako součást tohoto přístupu proudu XML často obsahuje odkazy Zpět na kód ve formě názvů spravovaných typu.Spotřebitel proudu XML používá GetType metody vyřešit tyto názvy do skutečné typů a pak vytvoří instance těchto typů podle potřeby.Často kolem referenční typ schématu XML obsahuje sadu parametrů, které může předat instance stejného typu pro použití více okolnosti umožní.

Jedním příkladem v praxi je IVsDataObjectSelector podporují entity.Tato entita podporu odkazuje z částí proudu dat objektu podpora XML určující informace o typech objektů zdroje dat, jako jsou tabulky nebo uložené procedury.By bylo možné zapsat implementace modulu selector, která používá jeden parametr označující podkladové identifikátor typu objektu načíst a pak v podpoře objektu XML obsahovat správná hodnota tohoto parametru pod odkazem volič pro každý typ.

Účelem tohoto rozhraní je bez nutnosti přidávat další metody nebo parametry povolit tento scénář parametrizované povolit předávání těchto parametrů metody na podporu entity.To se provádí pomocí přístup volání metody s pozdní vazbou, který je implementací poskytovatele zpracovávány.Rozhraní definuje jeden Invoke metody, které volající předává název metody vyvolat jeho pravidelné sadu argumentů a sadu parametrů specialize chování metody.Formát parametry závisí na volajícího.Je například schéma XML podporu Data objektu definovat způsob zadávání parametrů v souboru XML a jak budou tyto parametry přeložit do pole objektu parametry předané provedení.

Příklady

Následující kód ukazuje příklad dat objektu podpora XML, která definuje informace o dva datové typy objektů, včetně odkazů na jeden typ, který implementuje DSRefBuilder pro tyto typy služeb.Při tomto kódu implementuje IDSRefBuilder rozhraní jako datový objekt podpory.XML předá různé parametry pro každý typ a provedení výběru ukazuje výběr dvou různých kódů cest, v závislosti na parametrech.Všimněte si, že v případě více typické hodnoty parametrů bude použita obecnější způsobem tak, že kód není vědoma určité hodnoty, například v případě předávání parametrů na jiné rozhraní API, které nemá práci.

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

Viz také

Referenční dokumentace

Microsoft.VisualStudio.Data.Core – obor názvů