Asociar datos personalizados con extensiones de herramientas de SharePoint
Puede agregar datos personalizados a ciertos objetos en las extensiones de herramientas de SharePoint.Esto es útil cuando se tienen datos en una parte de la extensión a la que desea tener acceso más adelante desde otro código de la extensión.En lugar de implementar una manera personalizada para almacenar y tener acceso a los datos, puede asociar los datos a un objeto de la extensión y recuperar después los datos del mismo objeto.
Agregar datos personalizados a los objetos también es útil cuando se desea conservar datos pertinentes para un elemento específico en Visual Studio.Las extensiones de herramientas de SharePoint simplemente se cargan una vez en Visual Studio, de modo que la extensión podría funcionar en cualquier momento con varios elementos diferentes (como proyectos, elementos de proyecto o nodos Server Explorer).Si tiene datos personalizados que solo atañen a un elemento específico, puede agregarlos al objeto que representa ese elemento.
Al agregar datos personalizados a los objetos de las extensiones de herramientas de SharePoint, los datos no se conservan.Los datos están disponibles solo durante la vida útil del objeto.Una vez que el objeto es reclamado por la recolección de elementos no utilizados, se pierden los datos.
En las extensiones del sistema de proyectos de SharePoint, también puede guardar los datos de cadena que se conservan una vez descargada una extensión.Para obtener más información, vea Guardar datos asociados en extensiones del sistema de proyectos de SharePoint.
Objetos que pueden contener datos personalizados
Puede agregar datos personalizados a cualquier objeto del modelo de objetos de herramientas de SharePoint que implemente la interfaz IAnnotatedObject.Esta interfaz define solo una propiedad, Annotations, que es una colección de objetos de datos personalizados.Los tipos siguientes implementan IAnnotatedObject:
Microsoft.VisualStudio.SharePoint.ISharePointProjectFeatureResourceFile
Microsoft.VisualStudio.SharePoint.ISharePointProjectItemFile
Microsoft.VisualStudio.SharePoint.ISharePointProjectItemType
Microsoft.VisualStudio.SharePoint.ISharePointProjectItemTypeDefinition
Microsoft.VisualStudio.SharePoint.Deployment.IDeploymentContext
Microsoft.VisualStudio.SharePoint.Explorer.IExplorerNodeType
Microsoft.VisualStudio.SharePoint.Explorer.IExplorerNodeTypeDefinition
Agregar y recuperar datos personalizados
Para agregar datos personalizados a un objeto de extensión de herramientas de SharePoint, obtenga la propiedad Annotations del objeto al que desea agregar los datos y utilice el método IAnnotationDictionary.Add() para agregar los datos al objeto.
Para recuperar datos personalizados de un objeto de una extensión de herramientas de SharePoint, obtenga la propiedad Annotations del objeto y utilice uno de los métodos siguientes:
IAnnotationDictionary.TryGetValue().Este método devuelve true si existe el objeto de datos, o false si no existe.Puede utilizar este método para recuperar instancias de tipos de valor o tipos de referencia.
IAnnotationDictionary.GetValue().Este método devuelve el objeto de datos si existe o null si no existe.Solo puede utilizar este método para recuperar instancias de tipos de referencia.
En el siguiente ejemplo de código se determina si un objeto de datos concreto ya está asociado a un elemento de proyecto.Si el objeto de datos aún no está asociado al elemento de proyecto, el código agrega el objeto a la propiedad Annotations del elemento de proyecto.Para consultar este ejemplo en el contexto de un ejemplo mayor, vea Cómo: Agregar una propiedad a un tipo de elemento de proyecto personalizado de SharePoint.
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);
}
Vea también
Tareas
Tutorial: Extender el Explorador de servidores para mostrar elementos web
Conceptos
Programar conceptos y características para extensiones de SharePoint
Cómo: Agregar una propiedad a proyectos de SharePoint
Cómo: Agregar una propiedad a un tipo de elemento de proyecto personalizado de SharePoint