Сегодня продолжу рассказ про то. где можно хранить всякие пользовательские установки в SharePoint. Сегодня - самый идеологически правильный вариант, к сожалению, требующий административных прав, SPPersistedObject. Ну, админские права - это не проблема. у нас же есть RunWithElevatedPrivilegies.
Но, вернемся к нашей теме. Что вообще такое этот SPPersistedObject? Вот краткая выдержка из MSDN:
Класс SPPersistedObject предоставляет базовый класс для всех объектов администрирования. Все поля с атрибутом Persisted к XML-сериализации и записывает XML blob в базу данных конфигурации.
Так что, все что нам нужно - это создать свой класс наследующий у SPPersistedObject и содержащий нужные нам Persisted поля. Вот так, например:
public class MySettingsClass: SPPersistedObject { public MySettingsClass() {} public MySettingsClass(string name, SPPersistedObject parent, Guid id) : base(name, parent, id) { } [Persisted] public string MySomeProperty; [Persisted] public string MyOtherProperty; }
Итак, свой класс мы создали. Надо сказать, это был самый сложный этап. Дальше все делается парой строк кода. Давайте сохраним наши установки. Например, в контексте объекта webApplication:
MySettingsClass settings = new MySettingsClass("my settings", SPContext.Current.Site.WebApplication, Guid.NewGuid()); settings.MySomeProperty = "test"; settings.MyOtherProperty = "test2"; settings.Update();
Ну и теперь, получив из webApplication объект нашего класса мы можем восстановить наши установки.
MySettingsClass settings = SPContext.Current.Site.WebApplication.GetChild< mysettingsclass >("my settings"); string property1 = settings.MySomeProperty; // "test"; string property2 = settings.MyOtherProperty // "test2";
Как видите ничего сложного. Единственная проблема - то, что вы собираетесь хранить в своем классе должно поддерживать сериализацию.