Partager via


IVsDataClientObject<T>, interface

Représente un objet client de wrapper qui interagit avec un objet fournisseur sous-jacent.

Espace de noms :  Microsoft.VisualStudio.Data.Core
Assembly :  Microsoft.VisualStudio.Data.Core (dans Microsoft.VisualStudio.Data.Core.dll)

Syntaxe

'Déclaration
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 ne prend pas en charge les types ou les méthodes génériques.

Paramètres de type

  • T
    Type du paramètre.

Le type IVsDataClientObject<T> expose les membres suivants.

Méthodes

  Nom Description
Méthode publique Initialize Initialise l'objet client avec l'implémentation sous-jacente d'objet fournisseur.

Début

Notes

Lorsqu'un client de DDEX appelle le runtime de DDEX pour créer une instance d'une entité de prise en charge DDEX pour un fournisseur particulier, l'objet fournisseur est généralement créé et retourné directement au client. Dans ce cas, le client a un handle direct à l'implémentation du fournisseur. Dans certains cas, le propriétaire de l'entité de prise en charge DDEX peut définir le comportement supplémentaire ou modifié de l'entité de charge en interagissant avec le client afin de répondre aux attentes client sans ajouter une charge supplémentaire sur le writer de fournisseur.

La plupart d'exemple courant de cette spécification est sous la forme de services de connexion de DDEX comme l'entité de prise en charge d' IVsDataCommand . L'objectif d' IVsDataConnection, l'objet de Connexion de DDEX, est de réduire la charge mémoire requise côté client pour vérifier que la connexion est actuellement ouverte et pas utilisée par un autre client, mais en même temps pour éviter la nécessité d'être préoccuper ces questions du côté du fournisseur. Par conséquent, un service donné de connexion peut avoir un objet client associé qu'effectue garantir cette logique supplémentaire de la connexion est ouvert et correctement partagé par plusieurs clients. Cette implémentation encapsule l'objet fournisseur sous-jacent et est automatiquement fournie au client par le runtime de DDEX.

Entités de prise en charge DDEX qui s'attendent à inclure le retour du DDEX un objet client de wrapper sur la création de l'entité de la prise en charge du fournisseur l'attribut d' DataClientObjectAttribute sur le type qui représente l'entité de charge. Cet attribut identifie une classe wrapper qui implémente cette interface. Lorsque demandé par un client, le runtime de DDEX crée d'abord une instance de l'objet fournisseur sous-jacent et crée ensuite une instance de la classe wrapper. L'objectif de cette interface est de fournir une méthode pour initialiser l'objet de wrapper avec l'objet fournisseur sous-jacent.

L'interface d' IVsDataClientObject<T> est principalement d'adresse aux extendeurs de plateforme de DDEX, c. autrement dit., ceux qui créent des entités supplémentaires de services et prend en charge DDEX.

Exemples

Le code suivant illustre la définition d'une entité factice de charge qui déclare un attribut d'objet client. Cette définition est suivie par l'implémentation de l'objet client, qui ajoute l'enregistrement simple des appels dans l'entité de charge.

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

Voir aussi

Référence

Microsoft.VisualStudio.Data.Core, espace de noms