Condividi tramite


Classe DataClientObjectAttribute

Specifica che le istanze di un'entità di supporto di DDEX non devono essere restituite direttamente ai client. Invece, devono essere restituite in un oggetto client wrapper che interagisce con l'oggetto provider sottostante.

Gerarchia di ereditarietà

Object
  Attribute
    Microsoft.VisualStudio.Data.Core.DataClientObjectAttribute

Spazio dei nomi:  Microsoft.VisualStudio.Data.Core
Assembly:  Microsoft.VisualStudio.Data.Core (in Microsoft.VisualStudio.Data.Core.dll)

Sintassi

'Dichiarazione
<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

Il tipo DataClientObjectAttribute espone i seguenti membri.

Costruttori

  Nome Descrizione
Metodo pubblico DataClientObjectAttribute Inizializza una nuova istanza della classe DataClientObjectAttribute, che specifica l'id di classe

In alto

Proprietà

  Nome Descrizione
Proprietà pubblica ClassId Ottiene l'id della classe che identifica il tipo della classe di oggetti client.
Proprietà pubblica TypeId Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute. (Ereditato da Attribute)

In alto

Metodi

  Nome Descrizione
Metodo pubblico Equals Infrastruttura. Restituisce un valore che indica se l'istanza è uguale a un oggetto specificato. (Ereditato da Attribute)
Metodo pubblico GetHashCode Restituisce il codice hash per l'istanza. (Ereditato da Attribute)
Metodo pubblico GetType Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object)
Metodo pubblico IsDefaultAttribute Quando è sottoposto a override in una classe derivata, indica se il valore di questa istanza è il valore predefinito della classe derivata. (Ereditato da Attribute)
Metodo pubblico Match Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato. (Ereditato da Attribute)
Metodo pubblico ToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)

In alto

Implementazioni esplicite dell'interfaccia

  Nome Descrizione
Implementazione esplicita dell'interfacciaMetodo privato System#Runtime#InteropServices#_Attribute#GetIDsOfNames Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch. (Ereditato da Attribute)
Implementazione esplicita dell'interfacciaMetodo privato System#Runtime#InteropServices#_Attribute#GetTypeInfo Recupera le informazioni sul tipo relative a un oggetto, che possono essere utilizzate per ottenere informazioni sul tipo relative a un'interfaccia. (Ereditato da Attribute)
Implementazione esplicita dell'interfacciaMetodo privato System#Runtime#InteropServices#_Attribute#GetTypeInfoCount Recupera il numero delle interfacce di informazioni di tipo fornite da un oggetto (0 o 1). (Ereditato da Attribute)
Implementazione esplicita dell'interfacciaMetodo privato System#Runtime#InteropServices#_Attribute#Invoke Fornisce l'accesso a proprietà e metodi esposti da un oggetto. (Ereditato da Attribute)

In alto

Note

Quando un client di DDEX chiama il runtime di DDEX per creare un'istanza di un oggetto di supporto di DDEX per un particolare, l'oggetto provider in genere creato e restituito al client. In questo caso, il client ha un handle dirette all'implementazione del provider. In alcuni casi, il proprietario della definizione di supporto di DDEX può essere opportuno definire il comportamento aggiuntivo o modificato per l'entità di supporto quando interagisce con il client. Ciò può consentire di soddisfare le aspettative client senza aggiungere un lavoro aggiuntivo per il writer del provider.

L'esempio più comune di questo requisito viene fornito sotto forma di servizi di connessione di DDEX, come l'entità di supporto IVsDataCommand. Una funzione IVsDataConnection, l'oggetto connessione di DDEX, di ridurre il sovraccarico richiesto sul lato client di assicurarsi che la connessione sia attualmente aperta e non condizione utilizzata da un altro client, ma contemporaneamente eliminare le problematiche su questi problemi nel provider parteggia. Pertanto un servizio specificato di connessione può avere un oggetto client associato che esegue garantire aggiuntivo di logica che la connessione sia aperto e correttamente condiviso tra più client. Questa implementazione esegue il wrapping dell'oggetto provider sottostante e viene fornita automaticamente al client dal runtime di DDEX.

Entità di supporto di DDEX per il quale si desidera avere la restituzione di runtime di DDEX un oggetto client wrapper sulla creazione di supporto del provider deve includere l'attributo sul tipo che rappresenta l'entità di supporto. L'attributo deve includere un valore per la proprietà ClassId e il valore deve essere un GUID valido che rappresenta la classe ID registrata nell'ambiente di Visual Studio. Infine, la classe identificata dall'ID della classe deve essere una classe gestita che implementa l'interfaccia IVsDataClientObject<T>. Una volta richieste da un client, il runtime di DDEX innanzitutto creeranno un'istanza dell'oggetto provider sottostante. Si creeranno un'istanza della classe che dispone dell'ID della classe Successivamente, inizializzerà l'oggetto client chiamando il metodo Initialize con l'oggetto provider sottostante. L'oggetto client viene quindi passato nuovamente al client.

L'attributo DataClientObjectAttribute funzionalità è particolarmente utile per le estensioni di piattaforma di DDEX, ovvero, quelle che creano servizi aggiuntivi di DDEX e le entità di supporto.

Esempi

Il codice seguente viene illustrata la definizione di un'entità fittizia di supporto che dichiara un attributo di oggetto client. La definizione è seguita dall'implementazione di questo oggetto client, che aggiunge la registrazione semplice delle chiamate all'entità di supporto.

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

Codice thread safe

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Vedere anche

Riferimenti

Spazio dei nomi Microsoft.VisualStudio.Data.Core