Compartir a través de


IVsDataClientObject<T> (Interfaz)

Representa un objeto contenedor de cliente que interactúe con un objeto de proveedor subyacente.

Espacio de nombres:  Microsoft.VisualStudio.Data.Core
Ensamblado:  Microsoft.VisualStudio.Data.Core (en Microsoft.VisualStudio.Data.Core.dll)

Sintaxis

'Declaración
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 no admite el uso de métodos ni tipos genéricos.

Parámetros de tipo

  • T
    Tipo del parámetro.

El tipo IVsDataClientObject<T> expone los siguientes miembros.

Métodos

  Nombre Descripción
Método público Initialize Inicializa el objeto cliente con la implementación subyacente del objeto de proveedor.

Arriba

Comentarios

Cuando un cliente de DDEX llama al runtime de DDEX para crear una instancia de una entidad de soporte de DDEX para un proveedor determinado, el objeto de proveedor se crea y se devuelve normalmente directamente al cliente. En este caso, el cliente tiene un identificador directo a la implementación del proveedor. En algunos casos, el propietario de la entidad de compatibilidad de DDEX recomendable definir el comportamiento adicional o modificado de la entidad admiten el interactuar con el cliente para resolver las expectativas del cliente sin agregar carga adicional del programador de proveedores.

El ejemplo más común de este requisito tiene forma de servicios de conexión de DDEX como la entidad de compatibilidad de IVsDataCommand . Un objetivo de IVsDataConnection, el objeto de conexión de DDEX, es minimizar la sobrecarga requerida en el cliente para asegurarse de que la conexión esté abierta y stop por otro cliente, pero cada vez para eliminar la necesidad de conocer estos problemas en el lado del proveedor. Por consiguiente, un servicio determinado de la conexión puede tener un objeto cliente asociado al que realiza asegurarse adicional de la lógica que la conexión está abierta y compartido correctamente entre clientes. Esta implementación contiene el objeto de proveedor subyacente y se proporciona automáticamente al cliente por el runtime de DDEX.

DDEX admiten las entidades que piensa que la devolución del runtime de DDEX un objeto contenedor de cliente en la creación de entidades admiten el proveedor incluye el atributo de DataClientObjectAttribute en el tipo que representa la entidad admiten. Este atributo identifica una clase contenedora que implementa esta interfaz. Cuando se solicita un cliente, el runtime de DDEX primero crea una instancia del objeto de proveedor subyacente y luego creará una instancia de la clase contenedora. El propósito de esta interfaz es proporcionar un método para inicializar el objeto contenedor con el objeto de proveedor subyacente.

La interfaz de IVsDataClientObject<T> sirve principalmente de interés a los extensores de la plataforma de DDEX, es decir, los que crean las entidades adicionales de los servicios y atención de DDEX.

Ejemplos

El código siguiente se muestra la definición de una entidad admiten ficticia que declara un atributo de objetos de cliente. Esta definición va seguida de la implementación del objeto de cliente, que agrega el registro simple de las llamadas a la entidad admiten.

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

Vea también

Referencia

Microsoft.VisualStudio.Data.Core (Espacio de nombres)