Сегодня продолжу рассказ про то. где можно хранить всякие пользовательские установки в 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";
Как видите ничего сложного. Единственная проблема - то, что вы собираетесь хранить в своем классе должно поддерживать сериализацию.
Комментариев нет:
Отправить комментарий