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 | |
---|---|---|
![]() |
DataClientObjectAttribute | Inizializza una nuova istanza della classe DataClientObjectAttribute, che specifica l'id di classe |
In alto
Proprietà
Nome | Descrizione | |
---|---|---|
![]() |
ClassId | Ottiene l'id della classe che identifica il tipo della classe di oggetti client. |
![]() |
TypeId | Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute. (Ereditato da Attribute) |
In alto
Metodi
Nome | Descrizione | |
---|---|---|
![]() |
Equals | Infrastruttura. Restituisce un valore che indica se l'istanza è uguale a un oggetto specificato. (Ereditato da Attribute) |
![]() |
GetHashCode | Restituisce il codice hash per l'istanza. (Ereditato da Attribute) |
![]() |
GetType | Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
![]() |
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) |
![]() |
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) |
![]() |
ToString | Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
In alto
Implementazioni esplicite dell'interfaccia
Nome | Descrizione | |
---|---|---|
![]() ![]() |
System#Runtime#InteropServices#_Attribute#GetIDsOfNames | Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch. (Ereditato da Attribute) |
![]() ![]() |
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) |
![]() ![]() |
System#Runtime#InteropServices#_Attribute#GetTypeInfoCount | Recupera il numero delle interfacce di informazioni di tipo fornite da un oggetto (0 o 1). (Ereditato da Attribute) |
![]() ![]() |
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.