Partager via


Association de données personnalisées à des extensions d'outils SharePoint

Vous pouvez ajouter des données personnalisées à certains objets dans les extensions d'outils SharePoint. Cela est utile lorsque vous possédez des données dans une partie de votre extension auxquelles vous souhaitez accéder ultérieurement à partir d'un autre code dans votre extension. Au lieu d'implémenter une manière personnalisée de stocker et d'accéder aux données, vous pouvez associer les données à un objet dans votre extension, puis extraire ultérieurement les données à partir de cet objet.

L'ajout de données personnalisées aux objets est également utile lorsque vous souhaitez conserver des données qui s'appliquent uniquement à un élément spécifique dans Visual Studio. Les extensions d'outils SharePoint n'étant chargées qu'une seule fois dans Visual Studio, votre extension peut fonctionner n'importe quand avec plusieurs éléments différents (tels que des projets, des éléments de projet ou des nœuds Server Explorer). Si vous possédez des données personnalisées qui s'appliquent uniquement à un élément spécifique, vous pouvez ajouter ces données à l'objet représentant cet élément.

Lorsque vous ajoutez des données personnalisées aux objets dans les extensions d'outils SharePoint, les données ne sont pas persistantes. Les données sont disponibles uniquement au cours de la durée de vie de l'objet. Une fois que l'objet a été récupéré par une opération garbage collection, les données sont perdues.

Dans les extensions du système de projet SharePoint, vous pouvez également enregistrer des données de type chaîne qui persistent après le déchargement d'une extension. Pour plus d'informations, consultez Enregistrement des données dans les extensions du système de projet SharePoint.

Objets pouvant contenir des données personnalisées

Vous pouvez ajouter des données personnalisées à tout objet du modèle d'objet Outils SharePoint qui implémente l'interface IAnnotatedObject. Cette interface définit une seule propriété, Annotations, qui représente une collection d'objets de données personnalisés. Les types suivants implémentent IAnnotatedObject :

Ajout et extraction de données personnalisées

Pour ajouter des données personnalisées à un objet dans une extension d'outils SharePoint, obtenez la propriété Annotations de l'objet auquel vous souhaitez ajouter les données, puis utilisez la méthode IAnnotationDictionary.Add() pour ajouter les données à l'objet.

Pour récupérer des données personnalisées d'un objet dans une extension d'outils SharePoint, obtenez la propriété Annotations de l'objet, puis utilisez l'une des méthodes suivantes :

  • IAnnotationDictionary.TryGetValue(). Cette méthode retourne true si l'objet de données existe et false s'il n'existe pas. Vous pouvez utiliser cette méthode pour récupérer des instances de type valeur ou de type référence.

  • IAnnotationDictionary.GetValue(). Cette méthode retourne l'objet de données s'il existe et null s'il n'existe pas. Vous pouvez utiliser cette méthode uniquement pour récupérer des instances de type référence.

L'exemple de code suivant détermine si un objet de données est déjà associé à un élément de projet. Si l'objet de données n'est pas déjà associé à l'élément de projet, le code ajoute l'objet à la propriété Annotations de l'élément de projet. Pour voir cet exemple dans un contexte plus large, consultez Comment : ajouter une propriété à un type d'élément de projet SharePoint personnalisé.

Private Sub ProjectItemPropertiesRequested(ByVal Sender As Object,
    ByVal e As SharePointProjectItemPropertiesRequestedEventArgs)
    Dim propertyObject As CustomProperties = Nothing

    ' If the properties object already exists, get it from the project item's annotations.
    If False = e.ProjectItem.Annotations.TryGetValue(propertyObject) Then
        ' Otherwise, create a new properties object and add it to the annotations.
        propertyObject = New CustomProperties(e.ProjectItem)
        e.ProjectItem.Annotations.Add(propertyObject)
    End If
    e.PropertySources.Add(propertyObject)
End Sub
void projectItemTypeDefinition_ProjectItemPropertiesRequested(object sender, 
    SharePointProjectItemPropertiesRequestedEventArgs e)
{
    CustomProperties property;

    // If the properties object already exists, get it from the project item's annotations.
    if (!e.ProjectItem.Annotations.TryGetValue(out property))
    {
        // Otherwise, create a new properties object and add it to the annotations.
        property = new CustomProperties(e.ProjectItem);
        e.ProjectItem.Annotations.Add(property);
    }

    e.PropertySources.Add(property);
}

Voir aussi

Tâches

Procédure pas à pas : création d'un élément de projet d'action personnalisé avec un modèle d'élément, partie 1

Procédure pas à pas : extension de l'Explorateur de serveurs pour afficher des WebParts

Autres ressources

Concepts et fonctionnalités de programmation des extensions d'outils SharePoint

Comment : ajouter une propriété à des projets SharePoint

Comment : ajouter une propriété à un type d'élément de projet SharePoint personnalisé