Classe DataDefaultObjectAttribute
Specifica che un'entità di supporto di DDEX dispone di un'implementazione predefinita che deve essere restituito quando un provider non fornisce un'implementazione.
Gerarchia di ereditarietà
Object
Attribute
Microsoft.VisualStudio.Data.Core.DataDefaultObjectAttribute
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 DataDefaultObjectAttribute _
Inherits Attribute
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Interface)]
public sealed class DataDefaultObjectAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Class|AttributeTargets::Interface)]
public ref class DataDefaultObjectAttribute sealed : public Attribute
[<Sealed>]
[<AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Interface)>]
type DataDefaultObjectAttribute =
class
inherit Attribute
end
public final class DataDefaultObjectAttribute extends Attribute
Il tipo DataDefaultObjectAttribute espone i seguenti membri.
Costruttori
Nome | Descrizione | |
---|---|---|
![]() |
DataDefaultObjectAttribute | Inizializza una nuova istanza della classe DataDefaultObjectAttribute, l'utilizzo dell'ID della classe |
In alto
Proprietà
Nome | Descrizione | |
---|---|---|
![]() |
ClassId | Ottiene l'id della classe che identifica il tipo predefinito della classe di oggetto. |
![]() |
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, il provider viene eseguita una query per determinare se supporta l'entità e, in caso affermativo, un'istanza viene creata e restituita. Se il provider non supporta l'entità, la chiamata per impostazione predefinita genera un'eccezione o restituisce nullriferimento null (Nothing in Visual Basic), come il percorso del codice. Tuttavia, in alcuni casi, i proprietari di supporto di DDEX possono presentare un'implementazione predefinita ragionevole che desiderano fornire ai client quando un provider di DDEX non fornisce la propria implementazione, quindi evitanti la condizione di errore.
Un esempio è rappresentato in pratica è l'entità di supporto IVsDataConnectionUIConnector. Questa entità di supporto contiene un singolo metodo chiamato per aprire una connessione dati da un contesto dell'interfaccia utente, ad esempio una finestra di dialogo di connessione dati. L'utilizzo tipico di questa entità di supporto è aggiungere il comportamento aggiuntivo, come verificare l'esistenza di destinazione della connessione dati e richiedere per creare un nuovo archivio dati se non viene trovato. Tuttavia, l'impostazione predefinita è ragionevole di aprire semplicemente la connessione in genere e di eseguire alcuna operazione speciale. Se questa implementazione predefinita viene concessa, il codice client è semplificato in quanto più necessario gestire separatamente i casi in cui il provider esegue o non implementa l'entità di supporto, né deve fornire al proprio fallback, l'implementazione predefinita.
Le entità del supporto tecnico DDEX che presentano un'implementazione predefinita ragionevole devono 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 IVsDataDefaultObject. Quando le richieste del client la creazione di un'istanza della classe con ID specificato, il runtime di DDEX creeranno questa istanza se non esiste alcuna implementazione del provider disponibile. L'implementazione predefinita viene quindi passato nuovamente al client.
L'attributo DataDefaultObjectAttribute è principalmente di interesse alle 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 supporto IVsDataConnectionUIConnector che dichiara un attributo di oggetto predefinito. La definizione è seguita dall'implementazione di questo oggetto predefinito.
using System;
using System.Runtime.InteropServices;
using Microsoft.VisualStudio.Data.Core;
using Microsoft.VisualStudio.Data.Services;
[DataDefaultObject("C58E1B8D-9723-40c8-8B11-9DDAF0B393BA")]
public interface IVsDataConnectionUIConnector
{
void Connect(IVsDataConnection connection);
}
[Guid("C58E1B8D-9723-40c8-8B11-9DDAF0B393BA")]
internal class DefaultConnectionUIConnector
: IVsDataConnectionUIConnector,
IVsDataDefaultObject
{
public void Connect(IVsDataConnection connection)
{
if (connection == null)
{
throw new ArgumentNullException("connection");
}
connection.Open();
}
}
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.