Как найти региональные переводы имен встроенных списков SharePoint? - PullRequest
0 голосов
/ 20 августа 2010

Существуют свойства PublishingWeb.PagesList и PublishingWeb.PagesListName, но URL-адреса других списков также зависят от языка сайта. Те, что я нашел, переведены так:

  • Документы
  • Изображения
  • Страницы
  • Задачи рабочего процесса

В SP2010 есть дополнительный API, но как я могу справиться с этим в 2007 году?

1 Ответ

0 голосов
/ 24 августа 2010

Эти данные доступны внутренними методами.Итак, у меня есть вспомогательный метод вызова:

[NotNull]
public static T Call<T>([CanBeNull] ref T cachedInvoker, [NotNull] Type subject, [NotNull] string methodName) where T : class
{
    if (cachedInvoker == null)
    {
        var method = subject.GetMethod(methodName, BindingFlags.Instance | BindingFlags.NonPublic);
        cachedInvoker = Delegate.CreateDelegate(typeof(T), method) as T;
        if (cachedInvoker == null)
            throw new ApplicationException(string.Format("Unable to create invoker for [{0}].[{1}].", subject, methodName));
    }
    return cachedInvoker;
}

И затем я получаю данные:

[NotNull]
public static SPFolder Documents([NotNull] this PublishingWeb web)
{
    return web.Lists[web.GetDocumentsListId()].RootFolder;
}

[NotNull]
public static string GetDocumentsListName([NotNull] this PublishingWeb web)
{
    return web.Lists[web.GetDocumentsListId()].Title;
}

private static Func<PublishingWeb, Guid> getDocumentsListIdInvoker;

[NotNull]
public static Guid GetDocumentsListId([NotNull] this PublishingWeb web)
{
    return
        Internal.Call(ref getDocumentsListIdInvoker, typeof (PublishingWeb), 
            "get_DocumentsListId")(web);
}

[NotNull]
public static string GetImagesListName([NotNull] this PublishingWeb web)
{
    return web.Lists[web.GetImagesListId()].Title;
}

private static Func<PublishingWeb, Guid> getImagesListIdInvoker;

[NotNull]
public static Guid GetImagesListId([NotNull] this PublishingWeb web)
{
    return
        Internal.Call(ref getImagesListIdInvoker, typeof(PublishingWeb), 
        "get_ImagesListId")(web);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...