Compartilhar via


DocumentIdProvider classe

Representa a classe base abstrata para implementar um gerador de ID do documento.

Inheritance hierarchy

System.Object
  Microsoft.Office.DocumentManagement.DocumentIdProvider

Namespace:  Microsoft.Office.DocumentManagement
Assembly:  Microsoft.Office.DocumentManagement (em Microsoft.Office.DocumentManagement.dll)

Sintaxe

'Declaração
<SharePointPermissionAttribute(SecurityAction.LinkDemand, ObjectModel := True)> _
<SharePointPermissionAttribute(SecurityAction.InheritanceDemand, ObjectModel := True)> _
Public MustInherit Class DocumentIdProvider
'Uso
Dim instance As DocumentIdProvider
[SharePointPermissionAttribute(SecurityAction.LinkDemand, ObjectModel = true)]
[SharePointPermissionAttribute(SecurityAction.InheritanceDemand, ObjectModel = true)]
public abstract class DocumentIdProvider

Comentários

É altamente recomendável que o gerador de ID do documento fornecer IDs exclusivos e prontamente capaz de tipo por um usuário.

Exemplos

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.DocumentManagement;
using Microsoft.SharePoint;

namespace CustomDocIDProvider
{
    /// <summary>
    /// This class provides an example of implementing a document ID provider.
    /// </summary>
    /// <remarks>
    /// The format of ID is "{web Name}@{list Item Guid} is custom ID!"
    /// </remarks>
    public class CustomDocumentIDProvider : DocumentIdProvider
    {
        // The format is "<web Name>@<list Item Guid> is custom ID!"
        private string idFormat = "{0}@{1} is custom ID!";

        public override string[] GetDocumentUrlsById(SPSite site, string documentId)
        {
            string itemUrl = string.Empty;
            // Only proceed if we have the site and document id
            if (site != null && !string.IsNullOrEmpty(documentId))
            {
                string[] splits = documentId.Split('@', ' ');
                string webName = splits.Length > 0 ? splits[0] : null;
                string itemId = splits.Length > 1 ? splits[1] : null;
                try
                {
                    SPWeb web = string.IsNullOrEmpty(webName) ? site.OpenWeb() : site.OpenWeb(webName);
                    SPListItem item = null;
                    Guid itemGuid = new Guid(itemId);
                    // Find the item among the lists on the specified web
                    foreach (SPList list in web.Lists)
                    {
try
{
                        item = list.Items[itemGuid];
}
catch
{
//if it's not in this list, go to the next one
continue;
}
                        if (item != null)
                        {
                            itemUrl = web.Url + "/";
                            itemUrl += item.Url;
                        }
                    }
                }
                catch (Exception) { /* item not found, return an empty array*/ }
            }

    if (string.IsNullOrEmpty(itemUrl))
    {
return null;
            }
    else
    {
        return new string[] { itemUrl };
    }
        }

        public override string GenerateDocumentId(SPListItem listItem)
        {
            if (listItem == null)
            {
                throw new ArgumentNullException("listItem");
            }
            return string.Format(this.idFormat, listItem.Web.Name, listItem.UniqueId.ToString());
        }

        public override string GetSampleDocumentIdText(SPSite site)
        {
            return string.Format(this.idFormat, "/", "0");
        }

        public override bool DoCustomSearchBeforeDefaultSearch
        {
            get { return false; }
        }
    }
}

Segurança de thread

Os membros públicos estática (Shared no Visual Basic) desse tipo são seguros para thread. Nenhum membro de instância pode ser garantido como seguro para thread.

Ver também

Referência

DocumentIdProvider membros

Microsoft.Office.DocumentManagement namespace