DataClientObjectAttribute, classe

Spécifie que des instances d'une entité de prise en charge DDEX ne doivent pas être directement retournées aux clients.À la place, elles doivent être retournées via un objet client de wrapper qui interagit avec l'objet fournisseur sous-jacent.

Hiérarchie d'héritage

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

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

Syntaxe

'Déclaration
<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

Le type DataClientObjectAttribute expose les membres suivants.

Constructeurs

  Nom Description
Méthode publique DataClientObjectAttribute Initialise une nouvelle instance de la classe d' DataClientObjectAttribute , en spécifiant l'ID de classe

Début

Propriétés

  Nom Description
Propriété publique ClassId Obtient l'ID de classe qui identifie le type client de classe d'objet.
Propriété publique TypeId Lors de son implémentation dans une classe dérivée, obtient un identificateur unique pour Attribute. (Hérité de Attribute.)

Début

Méthodes

  Nom Description
Méthode publique Equals Infrastructure. Retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute.)
Méthode publique GetHashCode Retourne le code de hachage de cette instance. (Hérité de Attribute.)
Méthode publique GetType Obtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode publique IsDefaultAttribute En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée. (Hérité de Attribute.)
Méthode publique Match En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute.)
Méthode publique ToString Retourne une chaîne qui représente l'objet actuel. (Hérité de Object.)

Début

Implémentations d'interface explicite

  Nom Description
Implémentation d'interface expliciteMéthode privée _Attribute.GetIDsOfNames Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. (Hérité de Attribute.)
Implémentation d'interface expliciteMéthode privée _Attribute.GetTypeInfo Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface. (Hérité de Attribute.)
Implémentation d'interface expliciteMéthode privée _Attribute.GetTypeInfoCount Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1). (Hérité de Attribute.)
Implémentation d'interface expliciteMéthode privée _Attribute.Invoke Fournit l'accès aux propriétés et aux méthodes exposées par un objet. (Hérité de Attribute.)

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 la définition de l'entité de prise en charge DDEX peut définir le comportement supplémentaire ou modifié pour l'entité de charge lorsqu'il interagit avec le client.Cela peut vous aider à répondre aux attentes client sans ajouter le travail supplémentaire pour le writer de fournisseur.

La plupart d'exemple courant de cette spécification est sous la forme de services de connexion de DDEX, tels que l'entité de prise en charge d' IVsDataCommand .Une fonction 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 n'est pas utilisé par un autre client, mais en même temps éliminer les problèmes traitant de ces questions sur le fournisseur dégrossissent.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.

Les entités de prise en charge DDEX pour lesquelles vous avez l'intention de prendre le retour du DDEX un objet client de wrapper lors de la création de l'entité de la prise en charge du fournisseur doit inclure cet attribut sur le type qui représente l'entité de charge.L'attribut doit inclure une valeur pour la propriété d' ClassId , et la valeur doit être un GUID valide qui représente un ID de classe stocké dans l'environnement Visual Studio.Enfin, la classe identifiée par l'ID de classe doit être une classe managée qui implémente l'interface d' IVsDataClientObject<T> .Lorsque demandé par un client, le runtime de DDEX crée d'abord une instance de l'objet fournisseur sous-jacent.Il crée ensuite une instance de la classe ayant l'ID de classe spécifiéeEnsuite, il initialisera l'objet client en appelant la méthode d' Initialize avec l'objet fournisseur sous-jacent.L'objet client est ensuite passé au client.

L'attribut d' DataClientObjectAttribute est surtout utile 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.La définition est suivie par l'implémentation de cet 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;

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

Sécurité des threads

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Voir aussi

Référence

Microsoft.VisualStudio.Data.Core, espace de noms