Поделиться через


Связь пользовательских данных с расширениями средств SharePoint

В некоторые объекты в расширениях средств SharePoint можно добавлять пользовательские данные.Это удобно при наличии в одной из частей расширения данных, к которым нужно будет обращаться позже из другой части кода расширения.Вместо реализации пользовательского способа хранения данных и доступа к ним можно связать данные с объектом в расширении, а затем извлечь эти данные из этого объекта позже.

Добавление пользовательских данных в объекты также удобно использовать для сохранения неизменными данных, важных для определенного элемента в Visual Studio.Расширения средств SharePoint загружаются в Visual Studio только один раз, поэтому расширение может работать с несколькими различными элементами (например, проектами, элементами проектов или узлами Server Explorer).При наличии пользовательских данных, имеющих отношение только к определенному элементу, можно добавить эти данные в объект, представляющий этот элемент.

При добавлении пользовательских данных в объекты в расширениях средств SharePoint эти данные не сохраняются.Данные доступны только в течение времени существования объекта.После очистки объекта сборщиком мусора данные будут утрачены.

В расширениях системы проектов SharePoint также можно сохранить строковые данные, которые должны оставаться неизменными после выгрузки расширения.Дополнительные сведения см. в разделе Сохранение данных в расширениях системы проектов SharePoint.

Объекты, которые могут содержать пользовательские данные

Пользовательские данные можно добавить в любой объект объектной модели средств SharePoint, реализующей интерфейс IAnnotatedObject.Этот интерфейс определяет только одно свойство Annotations, представляющее собой коллекцию объектов пользовательских данных.Следующие типы реализуют интерфейс IAnnotatedObject:

Добавление и извлечение пользовательских данных

Чтобы добавить пользовательские данные в объект в расширении средств 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);
}

См. также

Задачи

Пошаговое руководство. Создание элемента проекта настраиваемого действия с помощью шаблона элемента, часть 1

Пошаговое руководство. Расширение обозревателя сервера, чтобы в нем отображались веб-части

Основные понятия

Понятия программирования и функции расширений SharePoint

Практическое руководство. Добавление свойства в проекты SharePoint

Практическое руководство. Добавление свойства в пользовательский тип элемента проекта SharePoint