Classe ProvideDesignerMetadataAttribute

Dichiara i metadati aggiuntivi per i tipi o oggetti, consentendo delle terze parti di modificare l'insieme dei metadati disponibili su una classe.

Gerarchia di ereditarietà

System.Object
  System.Attribute
    Microsoft.VisualStudio.Shell.RegistrationAttribute
      Microsoft.VisualStudio.Shell.Design.ProvideDesignerMetadataAttribute

Spazio dei nomi:  Microsoft.VisualStudio.Shell.Design
Assembly:  Microsoft.VisualStudio.Shell.Design (in Microsoft.VisualStudio.Shell.Design.dll)

Sintassi

'Dichiarazione
<AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple := True, Inherited := True)> _
Public NotInheritable Class ProvideDesignerMetadataAttribute _
    Inherits RegistrationAttribute
[AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple = true, Inherited = true)]
public sealed class ProvideDesignerMetadataAttribute : RegistrationAttribute

Il tipo ProvideDesignerMetadataAttribute espone i seguenti membri.

Costruttori

  Nome Descrizione
Metodo pubblico ProvideDesignerMetadataAttribute Inizializza una nuova istanza di ProvideDesignerMetadataAttribute, di associazione nuovo Type di metadati con Typecorrente.

In alto

Proprietà

  Nome Descrizione
Proprietà pubblica IsGlobal Ottiene o imposta lo scopo delle modifiche dei metadati fornite da un'istanza ProvideDesignerMetadataAttribute
Proprietà pubblica MetadataType Ottiene il tipo di metadati.
Proprietà pubblica RuntimeType ottiene il tipo di runtime.
Proprietà pubblica TypeId Ottiene l'istanza corrente dell'attributo. (Ereditato da RegistrationAttribute)

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 Una volta sottoposto a override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata. (Ereditato da Attribute)
Metodo pubblico Match Una volta 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 Register Registra i metadati della finestra di progettazione. (Esegue l'override di RegistrationAttribute.Register(RegistrationAttribute.RegistrationContext)).
Metodo pubblico ToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)
Metodo pubblico Unregister Rimuove la chiave del Registro di sistema metadati della finestra di progettazione. (Esegue l'override di RegistrationAttribute.Unregister(RegistrationAttribute.RegistrationContext)).

In alto

Implementazioni esplicite dell'interfaccia

  Nome Descrizione
Implementazione esplicita dell'interfacciaMetodo privato _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 _Attribute.GetTypeInfo Recupera le informazioni sui tipi per un oggetto, che può essere utilizzato per ottenere informazioni sul tipo per un'interfaccia. (Ereditato da Attribute)
Implementazione esplicita dell'interfacciaMetodo privato _Attribute.GetTypeInfoCount Recupera il numero di interfacce di informazioni sui tipi che un oggetto garantisce (0 o 1). (Ereditato da Attribute)
Implementazione esplicita dell'interfacciaMetodo privato _Attribute.Invoke Fornisce l'accesso a proprietà e metodi esposti da un oggetto. (Ereditato da Attribute)

In alto

Note

Le modifiche fornite da un'istanza di ProvideDesignerMetadataAttribute sono state applicate all'implementazione di un package VS di Package possono avere uno dei due ambiti:

  • globale -- per tutte le nuove istanze di un componente specifico

  • locale -- riguardando solo l'istanza del componente creato in un'area di progettazione fornito dal package VS corrente.

Il valore di IsGlobal sull'attributo applicato all'implementazione di un package VS di Package determina questo ambito.

Applicare l'attributo a un'implementazione di Package con la proprietà di IsGlobal dell'oggetto di ProvideDesignerMetadataAttribute impostato su true, come in, modifica il browser per l'intero ambiente di Visual Studio :

       [ProvideDesignerMetadata(typeof(Color), typeof(CustomBrowser), IsGlobal=true)]

       internal class MyPackage : Package {}

Se il flag globale è stato impostato a false, la modifica dei metadati è locale rispetto alla finestra di progettazione corrente supportata dal package VS corrente:

       [ProvideDesignerMetadata(typeof(Color), typeof(CustomBrowser), IsGlobal=false)]

       internal class MyPackage : Package {}

[!NOTA]

Attualmente, l'area di progettazione supporta creare solo i componenti e pertanto solo i componenti possono contenere metadati locali.Nell'esempio precedente, una tenta di modificare una proprietà, ad esempio la proprietà di Color di un oggetto.Se IsGlobal è impostato su false , CustomBrowser non avrà mai perché la finestra di progettazione mai effettivamente crea un'istanza di Color.L'impostazione IsGlobal a false è utile per i componenti, quali i controlli, i timer e finestre di dialogo.

contesto di attributo

si applica a

Le classi che forniscono Vspackage implementando IVsPackage collegamento o la classe di Package .

ripetibile

attributi obbligatori

nessuno

attributi non validi

nessuno

Note per i chiamanti

Applicare un'istanza di questo attributo alla classe che implementa Package per un VSPackage se il package VS necessario modificare un tipo corrente modificandone i metadati disponibili tramite l'oggetto di TypeDescriptor .

Esempi

Per sostituire la selezione colori (l'implementazione di UITypeEditor che crea un editor di valori che verrà fornito agli utenti quando si modificano le proprietà del colore di un oggetto in fase di progettazione) associata alla classe di Color , reguires che:

  1. Un'istanza di ProvideDesignerMetadataAttribute da applicato all'implementazione di un package VS di Package da registrare che il package VS viene aggiunto un nuovo oggetto dei metadati (CustomColorAttributes) alla classe di Color .

  2. Fornire una definizione di un oggetto dei metadati (CustomColorAttributes), utilizzando il EditorAttribute associarla a una nuova finestra selezione colori.

  3. Creare un'implementazione di UITypeEditor per fornire un'interfaccia di progettazione alla modifica (CustomColorEditor).

//Register the VSPackage as providing modification of the metad
[ProvideDesignerMetadata(typeof(Color), typeof(CustomColorAttributes), IGlobal=true)]
internal class CustomColorPackage : Package {
    /* 
    *package implementation details
    */
}
// Specify the editor to change this property
[EditorAttribute(typeof(CustomColorEditor), typeof(UITypeEditor))]
internal class CustomColorAttributes 
{
    /*
     * Implementation of new color settings to be used with the custom color picker
    */
}
// And, the new color editor itself

internal class CustomColorEditor : UITypeEditor {
    /*
     * Implementation of the picker
    */
}

Il meccanismo di reflection di .NET Framework verrà quindi aggiornato e quando la necessità di utenti di modificare le proprietà del colore di un oggetto, l'ambiente di .NET Framework chiamerà GetEditor (come illustrato di seguito) e ottiene un'istanza di CustomColorEditor, non l'editor predefinito di colore per la classe di Color .

     UITypeEditor e = TypeDescriptor.GetEditor(typeof(Color), typeof(UITypeEditor));

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.Shell.Design