Compartir a través de


DataClientObjectAttribute (Clase)

Especifica que las instancias de una entidad de soporte de DDEX no deben devolver directamente a los clientes. En su lugar, deberían devolverse a través de un objeto contenedor de cliente que interactúen con el objeto de proveedor subyacente.

Jerarquía de herencia

Object
  Attribute
    Microsoft.VisualStudio.Data.Core.DataClientObjectAttribute

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

Sintaxis

'Declaración
<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

El tipo DataClientObjectAttribute expone los siguientes miembros.

Constructores

  Nombre Descripción
Método público DataClientObjectAttribute Inicializa una nueva instancia de la clase de DataClientObjectAttribute , especificando el identificador de la clase

Arriba

Propiedades

  Nombre Descripción
Propiedad pública ClassId Obtiene el id. de la clase que identifica el tipo de clase de objeto de cliente.
Propiedad pública TypeId Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute. (Se hereda de Attribute).

Arriba

Métodos

  Nombre Descripción
Método público Equals Infraestructura. Devuelve un valor que indica si esta instancia equivale a un objeto especificado. (Se hereda de Attribute).
Método público GetHashCode Devuelve el código hash de esta instancia. (Se hereda de Attribute).
Método público GetType Obtiene el objeto Type de la instancia actual. (Se hereda de Object).
Método público IsDefaultAttribute Cuando se invalida en una clase derivada, indica si el valor de esta instancia es el valor predeterminado para la clase derivada. (Se hereda de Attribute).
Método público Match Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado. (Se hereda de Attribute).
Método público ToString Devuelve una cadena que representa el objeto actual. (Se hereda de Object).

Arriba

Implementaciones explícitas de interfaces

  Nombre Descripción
Implementación explícita de interfacesMétodo privado System#Runtime#InteropServices#_Attribute#GetIDsOfNames Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío. (Se hereda de Attribute).
Implementación explícita de interfacesMétodo privado System#Runtime#InteropServices#_Attribute#GetTypeInfo Obtiene la información de tipos de un objeto, que puede utilizarse para obtener la información de tipos de una interfaz. (Se hereda de Attribute).
Implementación explícita de interfacesMétodo privado System#Runtime#InteropServices#_Attribute#GetTypeInfoCount Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1). (Se hereda de Attribute).
Implementación explícita de interfacesMétodo privado System#Runtime#InteropServices#_Attribute#Invoke Proporciona acceso a las propiedades y los métodos expuestos por un objeto. (Se hereda de Attribute).

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 definición de la entidad de compatibilidad de DDEX recomendable definir el comportamiento adicional o modificado para la entidad admiten cuando interactúa con el cliente. Esto puede ayudar a resolver las expectativas del cliente sin agregar trabajo adicional para el 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 . Una función de IVsDataConnection, el objeto de conexión de DDEX, es minimizar la sobrecarga requerida en el cliente asegurarse que la conexión esté abierta y que no usa otro cliente, pero al mismo tiempo eliminar relacionados con estos problemas en el proveedor convierte a un lado. 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 correctamente compartido 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 tener el retorno del runtime de DDEX que un objeto contenedor de cliente sobre la creación de entidades admiten el proveedor debe incluir este atributo del tipo que representa la entidad admiten. El atributo debe incluir un valor para la propiedad de ClassId , y el valor debe ser un GUID válido que representa un id. de la clase registrada en el entorno de Visual Studio. Finalmente, la clase identificada por el id. de la clase debe ser una clase administrada que implementa la interfaz de IVsDataClientObject<T> . Cuando se solicita un cliente, el runtime de DDEX primero crea una instancia del objeto de proveedor subyacente. A continuación creará una instancia de la clase que tiene el identificador especificado de la clase A continuación, se inicializará el objeto cliente llamando al método de Initialize con el objeto de proveedor subyacente. El objeto de cliente se pasa de nuevo al cliente.

El atributo de DataClientObjectAttribute es sobre todo útil 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. La definición va seguida de la implementación de este 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;

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

Seguridad para subprocesos

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Vea también

Referencia

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