Partilhar via


Classe DataClientObjectAttribute

Especifica que as instâncias de um entidade de suporte de DDEX não devem ser diretamente retornadas para clientes.Em vez de isso, eles devem ser retornados por um objeto invólucro de cliente que interage com o objeto subjacente do provedor.

Hierarquia de herança

System.Object
  System.Attribute
    Microsoft.VisualStudio.Data.Core.DataClientObjectAttribute

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

Sintaxe

'Declaração
<AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Interface)> _
Public NotInheritable Class DataClientObjectAttribute _
    Inherits Attribute
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Interface)]
public sealed class DataClientObjectAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Class|AttributeTargets::Interface)]
public ref class DataClientObjectAttribute sealed : public Attribute
[<Sealed>]
[<AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Interface)>]
type DataClientObjectAttribute =  
    class
        inherit Attribute
    end
public final class DataClientObjectAttribute extends Attribute

O tipo DataClientObjectAttribute expõe os membros a seguir.

Construtores

  Nome Descrição
Método público DataClientObjectAttribute Inicializa uma nova instância da classe de DataClientObjectAttribute , especificando a identificação de classe

Superior

Propriedades

  Nome Descrição
Propriedade pública ClassId Obtém a identificação de classe que identifica o tipo da classe de objeto de cliente.
Propriedade pública TypeId Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute. (Herdado de Attribute.)

Superior

Métodos

  Nome Descrição
Método público Equals Infraestrutura. Retorna um valor que indica se esta instância é igual a um objeto especificado. (Herdado de Attribute.)
Método público GetHashCode Retorna o código hash para essa instância. (Herdado de Attribute.)
Método público GetType Obtém Type da instância atual. (Herdado de Object.)
Método público IsDefaultAttribute Quando substituído em uma classe derivada, indica se o valor desta instância é o valor padrão para a classe derivada. (Herdado de Attribute.)
Método público Match Quando substituído em uma classe derivada, retorna um valor que indica se esta instância é igual a um objeto especificado. (Herdado de Attribute.)
Método público ToString Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object.)

Superior

Implementações explícitas da interface

  Nome Descrição
Implementação explícita da interfaceMétodo particular _Attribute.GetIDsOfNames Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho. (Herdado de Attribute.)
Implementação explícita da interfaceMétodo particular _Attribute.GetTypeInfo Recupera as informações de tipo para um objeto, que pode ser usado para obter as informações de tipo para uma interface. (Herdado de Attribute.)
Implementação explícita da interfaceMétodo particular _Attribute.GetTypeInfoCount Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1). (Herdado de Attribute.)
Implementação explícita da interfaceMétodo particular _Attribute.Invoke Fornece acesso a propriedades e métodos expostos por um objeto. (Herdado de Attribute.)

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 definição de entidade suporte de DDEX pode querer definir o comportamento adicional ou modificado para a entidade de suporte quando interage com o cliente.Isso pode ajudar a localizar expectativas de cliente sem adicionar o trabalho adicional para o 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 .Uma função de IVsDataConnection, o objeto de conexão de DDEX, minimizar a sobrecarga é necessária no lado do cliente para garantir que a conexão é aberta no momento e não sendo usado por outro cliente, mas ao mesmo tempo para eliminar interesses sobre esses problemas no provedor leva partido.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.

As entidades de suporte de DDEX para que você pretende ter o retorno de tempo de execução de DDEX um objeto invólucro de cliente em cima de criação de entidade de suporte do provedor devem incluir o atributo no tipo que representa a entidade de suporte.O atributo deve incluir um valor para a propriedade de ClassId , e o valor GUID deve ser válido que representa uma identificação de classe registrada no ambiente do Visual Studio.Finalmente, a classe identificada por ID da classe deve ser uma classe gerenciada que implementa a interface de IVsDataClientObject<T> .Quando solicitado por um cliente, o tempo de execução de DDEX primeiro criará uma instância do objeto subjacente do provedor.Irá criar uma instância da classe que tem a identificação da classe especificadaEm seguida, inicializará o objeto cliente chamando o método de Initialize ao objeto subjacente do provedor.O objeto de cliente é então passado de volta para o cliente.

O atributo de DataClientObjectAttribute primeiro é útil 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.A definição é seguido pela implementação de esse 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;

namespace DataClientObjectAttrib
{
    [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.");
        }
    }
}

Acesso thread-safe

Quaisquer membros estático (Shared no Visual Basic) públicos deste tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Consulte também

Referência

Namespace Microsoft.VisualStudio.Data.Core