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 | |
---|---|---|
ProvideDesignerMetadataAttribute | Inizializza una nuova istanza di ProvideDesignerMetadataAttribute, di associazione nuovo Type di metadati con Typecorrente. |
In alto
Proprietà
Nome | Descrizione | |
---|---|---|
IsGlobal | Ottiene o imposta lo scopo delle modifiche dei metadati fornite da un'istanza ProvideDesignerMetadataAttribute | |
MetadataType | Ottiene il tipo di metadati. | |
RuntimeType | ottiene il tipo di runtime. | |
TypeId | Ottiene l'istanza corrente dell'attributo. (Ereditato da RegistrationAttribute) |
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 | 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) | |
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) | |
Register | Registra i metadati della finestra di progettazione. (Esegue l'override di RegistrationAttribute.Register(RegistrationAttribute.RegistrationContext)). | |
ToString | Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) | |
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 | |
---|---|---|
_Attribute.GetIDsOfNames | Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch. (Ereditato da Attribute) | |
_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) | |
_Attribute.GetTypeInfoCount | Recupera il numero di interfacce di informazioni sui tipi che un oggetto garantisce (0 o 1). (Ereditato da Attribute) | |
_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 |
sì |
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:
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 .
Fornire una definizione di un oggetto dei metadati (CustomColorAttributes), utilizzando il EditorAttribute associarla a una nuova finestra selezione colori.
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.