ProvideDesignerMetadataAttribute, classe
Déclare des métadonnées supplémentaires pour les types ou des objets, ce qui permet à des tiers pour modifier l'ensemble de métadonnées disponibles sur une classe.
Hiérarchie d'héritage
System.Object
System.Attribute
Microsoft.VisualStudio.Shell.RegistrationAttribute
Microsoft.VisualStudio.Shell.Design.ProvideDesignerMetadataAttribute
Espace de noms : Microsoft.VisualStudio.Shell.Design
Assembly : Microsoft.VisualStudio.Shell.Design (dans Microsoft.VisualStudio.Shell.Design.dll)
Syntaxe
'Déclaration
<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
Le type ProvideDesignerMetadataAttribute expose les membres suivants.
Constructeurs
Nom | Description | |
---|---|---|
ProvideDesignerMetadataAttribute | Initialise une nouvelle instance d'ProvideDesignerMetadataAttribute, associer des nouvelles métadonnées Type avec Type actuel. |
Début
Propriétés
Nom | Description | |
---|---|---|
IsGlobal | Obtient ou définit la portée des modifications de métadonnées fournies par une instance ProvideDesignerMetadataAttribute | |
MetadataType | Obtient le type des métadonnées. | |
RuntimeType | Obtient le type au moment de l'exécution. | |
TypeId | Obtient l'instance actuel de cet attribut. (Hérité de RegistrationAttribute.) |
Début
Méthodes
Nom | Description | |
---|---|---|
Equals | Infrastructure. Retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute.) | |
Finalize | Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de nettoyage avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.) | |
GetHashCode | Retourne le code de hachage de cette instance. (Hérité de Attribute.) | |
GetPackageRegKeyPath | Obtient le chemin d'accès au Registre (par rapport à la racine de Registre de l'application) du VSPackage. (Hérité de RegistrationAttribute.) | |
GetType | Obtient le Type de l'instance actuelle. (Hérité de Object.) | |
IsDefaultAttribute | En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée. (Hérité de Attribute.) | |
Match | En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute.) | |
MemberwiseClone | Crée une copie superficielle de l'objet Object actuel. (Hérité de Object.) | |
Register | Enregistre les métadonnées conceptrices. (Substitue RegistrationAttribute.Register(RegistrationAttribute.RegistrationContext).) | |
ToString | Retourne une chaîne qui représente l'objet actuel. (Hérité de Object.) | |
Unregister | Supprime la clé de Registre conceptrice de métadonnées. (Substitue RegistrationAttribute.Unregister(RegistrationAttribute.RegistrationContext).) |
Début
Implémentations d'interface explicite
Nom | Description | |
---|---|---|
_Attribute.GetIDsOfNames | Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. (Hérité de Attribute.) | |
_Attribute.GetTypeInfo | Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface. (Hérité de Attribute.) | |
_Attribute.GetTypeInfoCount | Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1). (Hérité de Attribute.) | |
_Attribute.Invoke | Fournit l'accès aux propriétés et aux méthodes exposées par un objet. (Hérité de Attribute.) |
Début
Remarques
Les modifications fournies par une instance d'ProvideDesignerMetadataAttribute se sont appliquées à l'implémentation d'un VSPackage d'Package peuvent avoir une de deux portées :
Global -- pour toutes les nouvelles instances d'un composant donné
Local -- concerner uniquement l'instance du composant créé sur une aire de conception a fourni par le VSPackage actuel.
La valeur d'IsGlobal sur l'attribut appliqué à l'implémentation d'un VSPackage d'Package détermine cette portée.
Appliquer l'attribut à une implémentation d'Package avec la propriété d'IsGlobal du jeu d'objets d'ProvideDesignerMetadataAttribute à true, comme ci-dessous, modifie le navigateur pour l'environnement entier de Visual Studio :
[ProvideDesignerMetadata(typeof(Color), typeof(CustomBrowser), IsGlobal=true)]
internal class MyPackage : Package {}
Si la balise globale était définie à false, alors la modification de métadonnées est locale au générateur actuel pris en charge par le VSPackage actuel :
[ProvideDesignerMetadata(typeof(Color), typeof(CustomBrowser), IsGlobal=false)]
internal class MyPackage : Package {}
[!REMARQUE]
À l'heure actuelle, l'aire de conception prend en charge uniquement créer des composants, et donc que les composants peuvent avoir des métadonnées locales.Dans l'exemple ci-dessus, nous tentions de modifier une propriété, telle que la propriété d'Color d'un objet.Si IsGlobal est défini à false, CustomBrowser n'apparaîtrait jamais parce que le générateur crée jamais en fait une instance d'Color.Le paramètre IsGlobal à false est utile pour des composants, tels que des contrôles, des minuteries, et des boîtes de dialogue.
Contexte d'attribut
S'applique à |
Classes fournissant des VSPackages en implémentant l'interface d'IVsPackage ou la classe d'Package. |
Reproductible |
Oui |
Attributs requis |
Aucun |
Attributs valides |
Aucun |
Remarques à l'attention des appelants
Appliquez-vous une instance de cet attribut à la classe implémentant Package pour un VSPackage si ce VSPackage doit modifier un type actuel en modifiant ses métadonnées disponibles via l'objet d'TypeDescriptor.
Exemples
Pour remplacer le sélecteur de couleurs (l'implémentation d'UITypeEditor créant un éditeur de valeurs qui est fourni aux utilisateurs en modifiant des propriétés de couleur d'un objet au moment du design) associé à la classe d'Color, reguires que :
Une instance d'ProvideDesignerMetadataAttribute par appliqué à l'implémentation d'un VSPackage d'Package à l'enregistrer que le VSPackage ajoute un nouvel objet de métadonnées (CustomColorAttributes) à la classe d'Color.
Fournissez une définition du nouvel objet de métadonnées (CustomColorAttributes), à l'aide de l'EditorAttribute pour l'associer avec un nouveau sélecteur de couleurs.
Créez une implémentation d'UITypeEditor pour fournir une interface de création à sa manipulation (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
*/
}
Le mécanisme de réflexion de .NET Framework ne sera alors mis à jour, et lorsque le besoin de l'utilisateur de modifier les propriétés de couleur d'un objet, l'environnement de .NET Framework appellera GetEditor (comme montré ci-dessous) et obtiendra une instance de CustomColorEditor, pas l'éditeur par défaut de couleur pour la classe d'Color.
UITypeEditor e = TypeDescriptor.GetEditor(typeof(Color), typeof(UITypeEditor));
Sécurité des threads
Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.