Partager via


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
Méthode publique ProvideDesignerMetadataAttribute Initialise une nouvelle instance d'ProvideDesignerMetadataAttribute, associer des nouvelles métadonnées Type avec Type actuel.

Début

Propriétés

  Nom Description
Propriété publique IsGlobal Obtient ou définit la portée des modifications de métadonnées fournies par une instance ProvideDesignerMetadataAttribute
Propriété publique MetadataType Obtient le type des métadonnées.
Propriété publique RuntimeType Obtient le type au moment de l'exécution.
Propriété publique TypeId Obtient l'instance actuel de cet attribut. (Hérité de RegistrationAttribute.)

Début

Méthodes

  Nom Description
Méthode publique Equals Infrastructure. Retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute.)
Méthode protégée 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.)
Méthode publique GetHashCode Retourne le code de hachage de cette instance. (Hérité de Attribute.)
Méthode protégée GetPackageRegKeyPath Obtient le chemin d'accès au Registre (par rapport à la racine de Registre de l'application) du VSPackage. (Hérité de RegistrationAttribute.)
Méthode publique GetType Obtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode publique 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.)
Méthode publique 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.)
Méthode protégée MemberwiseClone Crée une copie superficielle de l'objet Object actuel. (Hérité de Object.)
Méthode publique Register Enregistre les métadonnées conceptrices. (Substitue RegistrationAttribute.Register(RegistrationAttribute.RegistrationContext).)
Méthode publique ToString Retourne une chaîne qui représente l'objet actuel. (Hérité de Object.)
Méthode publique 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
Implémentation d'interface expliciteMéthode privée _Attribute.GetIDsOfNames Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. (Hérité de Attribute.)
Implémentation d'interface expliciteMéthode privée _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.)
Implémentation d'interface expliciteMéthode privée _Attribute.GetTypeInfoCount Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1). (Hérité de Attribute.)
Implémentation d'interface expliciteMéthode privée _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 :

  1. 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.

  2. 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.

  3. 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.

Voir aussi

Référence

Microsoft.VisualStudio.Shell.Design, espace de noms