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);
}
참고 항목
작업
연습: 항목 템플릿을 사용하여 사용자 지정 작업 프로젝트 항목 만들기, 1부