Condividi tramite


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
Metodo pubblico DataDefaultObjectAttribute Inizializza una nuova istanza della classe DataDefaultObjectAttribute, l'utilizzo dell'ID della classe

In alto

Proprietà

  Nome Descrizione
Proprietà pubblica ClassId Ottiene l'id della classe che identifica il tipo predefinito della classe di oggetto.
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, 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.

Vedere anche

Riferimenti

Spazio dei nomi Microsoft.VisualStudio.Data.Core