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
Object
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 | |
---|---|---|
DataClientObjectAttribute | Initialise une nouvelle instance de la classe d' DataClientObjectAttribute , en spécifiant l'ID de classe |
Début
Propriétés
Nom | Description | |
---|---|---|
ClassId | Obtient l'ID de classe qui identifie le type client de classe d'objet. | |
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 | |
---|---|---|
Equals | Infrastructure. Retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute.) | |
GetHashCode | Retourne le code de hachage de cette instance. (Hérité de Attribute.) | |
GetType | Obtient le Type de l'instance actuelle. (Hérité de Object.) | |
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.) | |
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.) | |
ToString | Retourne une chaîne qui représente l'objet actuel. (Hérité de Object.) |
Début
Implémentations d'interface explicite
Nom | Description | |
---|---|---|
System#Runtime#InteropServices#_Attribute#GetIDsOfNames | Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. (Hérité de Attribute.) | |
System#Runtime#InteropServices#_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.) | |
System#Runtime#InteropServices#_Attribute#GetTypeInfoCount | Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1). (Hérité de Attribute.) | |
System#Runtime#InteropServices#_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ée Ensuite, 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.