Связь пользовательских данных с расширениями средств SharePoint
В некоторые объекты в расширениях средств SharePoint можно добавлять пользовательские данные.Это удобно при наличии в одной из частей расширения данных, к которым нужно будет обращаться позже из другой части кода расширения.Вместо реализации пользовательского способа хранения данных и доступа к ним можно связать данные с объектом в расширении, а затем извлечь эти данные из этого объекта позже.
Добавление пользовательских данных в объекты также удобно использовать для сохранения неизменными данных, важных для определенного элемента в Visual Studio.Расширения средств SharePoint загружаются в Visual Studio только один раз, поэтому расширение может работать с несколькими различными элементами (например, проектами, элементами проектов или узлами Server Explorer).При наличии пользовательских данных, имеющих отношение только к определенному элементу, можно добавить эти данные в объект, представляющий этот элемент.
При добавлении пользовательских данных в объекты в расширениях средств SharePoint эти данные не сохраняются.Данные доступны только в течение времени существования объекта.После очистки объекта сборщиком мусора данные будут утрачены.
В расширениях системы проектов SharePoint также можно сохранить строковые данные, которые должны оставаться неизменными после выгрузки расширения.Дополнительные сведения см. в разделе Сохранение данных в расширениях системы проектов SharePoint.
Объекты, которые могут содержать пользовательские данные
Пользовательские данные можно добавить в любой объект объектной модели средств SharePoint, реализующей интерфейс IAnnotatedObject.Этот интерфейс определяет только одно свойство Annotations, представляющее собой коллекцию объектов пользовательских данных.Следующие типы реализуют интерфейс 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
Добавление и извлечение пользовательских данных
Чтобы добавить пользовательские данные в объект в расширении средств SharePoint, получите свойство Annotations объекта, к которому необходимо добавить данные, а затем воспользуйтесь методом IAnnotationDictionary.Add() для добавления данных к этому объекту.
Чтобы извлечь пользовательские данные из объекта в расширении средств SharePoint, получите свойство Annotations этого объекта и воспользуйтесь одним из следующих методов.
IAnnotationDictionary.TryGetValue().Этот метод возвращает значение true, если объект данных существует; в противном случае — значение false.Этот метод можно использовать для извлечения экземпляров типов значений или ссылочных типов.
IAnnotationDictionary.GetValue().Этот метод возвращает объект данных, если он существует, или значение null при его отсутствии.Этот метод можно использовать только для извлечения экземпляров ссылочных типов.
В следующем примере кода определяется, связан ли определенный объект данных с элементом проекта.Если объект данных еще не связан с элементом проекта, код добавляет объект в свойство элемента проекта Annotations.Данный пример в контексте полного примера см. в разделе Практическое руководство. Добавление свойства в пользовательский тип элемента проекта 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);
}
См. также
Задачи
Пошаговое руководство. Расширение обозревателя сервера, чтобы в нем отображались веб-части
Основные понятия
Понятия программирования и функции расширений SharePoint
Практическое руководство. Добавление свойства в проекты SharePoint
Практическое руководство. Добавление свойства в пользовательский тип элемента проекта SharePoint