Compartilhar via


Interface IVsDataClientObject<T>

Representa um objeto invólucro de cliente que interage com um objeto subjacente do provedor.

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

Sintaxe

'Declaração
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 não oferece suporte a tipos ou métodos genéricos.

Parâmetros de tipo

  • T
    O tipo de parâmetro.

O tipo IVsDataClientObject<T> expõe os membros a seguir.

Métodos

  Nome Descrição
Método público Initialize Inicializa o objeto cliente com a implementação do objeto subjacente do provedor.

Superior

Comentários

Quando um cliente de DDEX chama o tempo de execução de DDEX para criar uma instância de uma entidade suporte de DDEX para um provedor específico, o objeto do provedor normalmente é criado e retornado diretamente para o cliente.Em esse caso, o cliente tem um identificador direta a implementação do provedor.Em alguns casos, o proprietário de entidade suporte de DDEX pode querer definir o comportamento adicional ou modificado de entidade de suporte para interagir com o cliente para localizar expectativas de cliente sem adicionar a carga adicional no gravador do provedor.

O exemplo mais comum de esse requisito vem na forma de serviços de conexão de DDEX como a entidade de suporte de IVsDataCommand .Um objetivo de IVsDataConnection, o objeto de conexão de DDEX, minimizar a sobrecarga é necessária no lado do cliente para garantir que a conexão está atualmente aberto e não em uso por outro cliente, mas ao mesmo tempo para eliminar a necessidade de se preocupar com esses problemas no lado do provedor.Portanto, um determinado serviço de conexão pode ter um cliente objeto associado com ele executa lógica adicional garantindo que a conexão é aberta e compartilhado entre vários clientes corretamente.Essa implementação envolve o objeto subjacente do provedor e é fornecida automaticamente para o cliente em tempo de execução de DDEX.

Entidades de suporte de DDEX que pretendem ter o retorno de tempo de execução de DDEX um objeto invólucro de cliente na criação de entidade de suporte do provedor incluir o atributo de DataClientObjectAttribute no tipo que representa a entidade de suporte.Esse atributo identifica uma classe envoltório que implementa a interface.Quando solicitado por um cliente, o tempo de execução de DDEX primeiro criará uma instância do objeto subjacente do provedor e irá criar uma instância da classe envoltório.O objetivo de esta interface é fornecer um método para inicializar o objeto invólucro com o objeto subjacente do provedor.

A interface de IVsDataClientObject<T> primeiro é de interesse para extensores da plataforma de DDEX, isto é, os que criam entidades adicionais de assistências e suporte de DDEX.

Exemplos

O código a seguir mostra a definição de uma entidade fictícia de suporte que declara um atributo de objetos de cliente.Esta definição é seguido pela implementação do objeto de cliente, que adiciona o log simples de chamadas para a entidade de suporte.

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

Consulte também

Referência

Namespace Microsoft.VisualStudio.Data.Core