Freigeben über


IVsDataClientObject<T>-Schnittstelle

Stellt ein Clientwrapperobjekt dar, das auf ein zugrunde liegendes Anbieterobjekt interagiert.

Namespace:  Microsoft.VisualStudio.Data.Core
Assembly:  Microsoft.VisualStudio.Data.Core (in Microsoft.VisualStudio.Data.Core.dll)

Syntax

'Declaration
Public Interface IVsDataClientObject(Of T As Class)
public interface IVsDataClientObject<T>
where T : class
generic<typename T>
where T : ref class 
public interface class IVsDataClientObject
type IVsDataClientObject<'T when 'T : not struct> =  interface end
JScript unterstützt keine generischen Typen oder Methoden.

Typparameter

  • T
    Der Typ des Parameters.

Der IVsDataClientObject<T>-Typ macht die folgenden Member verfügbar.

Methoden

  Name Beschreibung
Öffentliche Methode Initialize Initialisiert das Clientobjekt mit der zugrunde liegenden Anbieterobjektimplementierung.

Zum Seitenanfang

Hinweise

Wenn ein DDEX-Client die DDEX-Laufzeit aufruft, um eine Instanz einer DDEX-Stützentität für einen bestimmten Anbieter zu erstellen, wird das Anbieterobjekt normalerweise direkt an den Client erstellt und zurückgegeben. In diesem Fall hat der Client direktes Handle zur Implementierung des Anbieters. In einigen Fällen sollte der Besitzer der DDEX-Stützentität zusätzliche oder geänderte Verhalten der Stützentität beim Interagieren mit dem Client definieren, um Clienterwartungen ohne zusätzliche Belastung auf dem Anbieterwriter hinzuzufügen zu entsprechen.

Das einfachste Beispiel dieser Anforderung stammt in Form von DDEX-Verbindungsdiensten wie der IVsDataCommand Stützentität. Ein Ziel von IVsDataConnection, das DDEX-Verbindungsobjekt, besteht darin, den Aufwand zu minimieren, der auf der Clientseite, um sicherzustellen, dass erforderlich ist, die Verbindung von einem anderen Client, aber gleichzeitig die Anforderung auszuschließen, über diese Probleme auf der Anbieterseite betroffen sein geöffnet und nicht verwendet wird. Daher kann ein angegebener Verbindungsdienst ein Clientobjekt, das zugeordnet ist, dass zusätzliche Logik ausführt, folgt, dass die Verbindung geöffnet und von mehreren Clients ordnungsgemäß freigegeben ist. Diese Implementierung bindet das zugrunde liegende Anbieterobjekt ein und automatisch an den Client von der DDEX-Laufzeit angegeben.

DDEX-Stützentitäten, die beabsichtigen, die DDEX-Laufzeitrückgabe ein Clientwrapperobjekt auf Erstellung der Entität des Anbieters Stützdas DataClientObjectAttribute-Attribut für den Typ enthalten soll, der die Stützentität darstellt. Dieses Attribut identifiziert eine Wrapperklasse, die diese Schnittstelle implementiert. Wenn sie durch einen Client angefordert wird, erstellt die DDEX-Laufzeit zunächst eine Instanz des zugrunde liegenden Anbieterobjekts und erstellt dann eine Instanz der Wrapperklasse. Der Zweck dieser Schnittstelle ist, eine Methode für das Initialisieren des Wrapperobjekt mit dem zugrunde liegenden Anbieterobjekt an.

Die IVsDataClientObject<T>-Schnittstelle ist hauptsächlich relevant für den DDEX-Plattformextendern h. die, die zusätzliche DDEXServiceentitäten erstellen.

Beispiele

Der folgende Code zeigt die Definition einer fiktiven Stützentität an, die ein ClientObjekt-Attribut deklariert. Diese Definition wird von der Implementierung des Clientobjekts gefolgt, das einfache Protokollierung der Aufrufe der Stützentität hinzugefügt wird.

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using Microsoft.VisualStudio.Data.Core;

[DataClientObject("1520C77F-09AF-40b4-B1FE-53C30A177C59")]
public interface IVsDataSupportEntity
{
    void DoSomething();
}

[Guid("1520C77F-09AF-40b4-B1FE-53C30A177C59")]
internal class ClientSupportEntity : IVsDataSupportEntity,
    IVsDataClientObject<IVsDataSupportEntity>
{
    private IVsDataSupportEntity _providerObj;

    public void Initialize(IVsDataSupportEntity providerObj)
    {
        if (providerObj == null)
        {
            throw new ArgumentNullException("providerObj");
        }
        _providerObj = providerObj;
    }

    public void DoSomething()
    {
        Trace.WriteLine("DoSomething started.");
        _providerObj.DoSomething();
        Trace.WriteLine("DoSomething finished.");
    }
}

Siehe auch

Referenz

Microsoft.VisualStudio.Data.Core-Namespace