Condividi tramite


Interfaccia IVsDataClientObject<T>

Rappresenta un oggetto client wrapper che interagisce con un oggetto provider sottostante.

Spazio dei nomi:  Microsoft.VisualStudio.Data.Core
Assembly:  Microsoft.VisualStudio.Data.Core (in Microsoft.VisualStudio.Data.Core.dll)

Sintassi

'Dichiarazione
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 non supporta i tipi o i metodi generici.

Parametri di tipo

  • T
    Tipo del parametro.

Il tipo IVsDataClientObject<T> espone i seguenti membri.

Metodi

  Nome Descrizione
Metodo pubblico Initialize Inizializza l'oggetto client con l'implementazione sottostante dell'oggetto provider.

In alto

Note

Quando un client di DDEX chiama il runtime di DDEX per creare un'istanza di un oggetto di supporto di DDEX per un particolare, l'oggetto provider in genere creato e restituito al client. In questo caso, il client ha un handle dirette all'implementazione del provider. In alcuni casi, il proprietario del supporto tecnico DDEX può essere opportuno definire il comportamento aggiuntivo o modificato di supporto quando interagisce con il client in modo da soddisfare le aspettative client senza aggiungere il carico aggiuntivo nel writer del provider.

L'esempio più comune di questo requisito viene fornito sotto forma di servizi di connessione di DDEX come l'entità di supporto IVsDataCommand. Un obiettivo IVsDataConnection, l'oggetto connessione di DDEX, di ridurre il sovraccarico richiesto sul lato client per verificare che la connessione sia attualmente aperta e non utilizzata da un altro client, ma contemporaneamente per eliminare la necessità di costituire questi problemi dal lato provider. Pertanto, un servizio specificato di connessione può avere un oggetto client associato che esegue garantire aggiuntivo di logica che la connessione sia aperto e correttamente condiviso tra più client. Questa implementazione esegue il wrapping dell'oggetto provider sottostante e viene fornita automaticamente al client dal runtime di DDEX.

Entità di supporto di DDEX che prevede di eseguire il ripristino di runtime di DDEX includere un oggetto client wrapper sulla creazione di supporto del provider l'attributo DataClientObjectAttribute il tipo che rappresenta l'entità di supporto. Questo attributo identifica una classe wrapper che implementa. Una volta richieste da un client, il runtime di DDEX innanzitutto creeranno un'istanza dell'oggetto provider sottostante e si creeranno un'istanza della classe wrapper. Lo scopo di questa interfaccia è fornire un metodo per inizializzare l'oggetto wrapper con l'oggetto provider sottostante.

L'interfaccia IVsDataClientObject<T> è principalmente di interesse alle estensioni di piattaforma di DDEX, ovvero, quelle che creano servizi aggiuntivi di DDEX e le entità di supporto.

Esempi

Il codice seguente viene illustrata la definizione di un'entità fittizia di supporto che dichiara un attributo di oggetto client. Questa definizione è seguita dall'implementazione dell'oggetto client, che aggiunge la registrazione semplice delle chiamate all'entità di supporto.

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.");
    }
}

Vedere anche

Riferimenti

Spazio dei nomi Microsoft.VisualStudio.Data.Core