Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Подгрузка небольшого xml-файла


Автор: ДобренькийПапаша 10.8.2011, 10:59
Вот есть xml-файл настроек. Есть много методов в классе, которые с ним работают как с базой: что-то выдёргивают, что-то записывают.
Каждый раз вызывать XDocument.Load() в каждом методе, или как-то кэшировать (а как? и если кэшировать, то как быть уверенным в актуальности состояния закэшированного объекта?).

В общем как сделать "правильным" способом? smile

Автор: kobra 10.8.2011, 13:12
Цитата(ДобренькийПапаша @  10.8.2011,  10:59 Найти цитируемый пост)
и если кэшировать, то как быть уверенным в актуальности состояния закэшированного объекта?

если с фаилом будет работать болше одного приложения, то кешировать не получится.

Автор: ДобренькийПапаша 10.8.2011, 13:22
Цитата(kobra @  10.8.2011,  13:12 Найти цитируемый пост)
если с фаилом будет работать болше одного приложения, то кешировать не получится. 

Нет, не будет.

Автор: kobra 10.8.2011, 14:56
Цитата(ДобренькийПапаша @  10.8.2011,  13:22 Найти цитируемый пост)
Нет, не будет. 

тагда в чем проблема? 

Автор: jonie 11.8.2011, 10:05
потому что те, кто обращается к конфигу вообще ничего не должны знать про app.config - у них должно быть API в виде класса конфигурации (например). Типа App.Configuration.DBConnectionString {get;} - а уж что внутрях их волновать не должно - ну и там как раз кеширование будет.

Автор: ДобренькийПапаша 11.8.2011, 10:55
Я ещё маленький и глупенький. Меня интересовал вопрос: а как кэшировать? smile
Стыдно, конечно, каюсь smile

Автор: jonie 11.8.2011, 11:08
Цитата(ДобренькийПапаша @  11.8.2011,  11:55 Найти цитируемый пост)
Меня интересовал вопрос: а как кэшировать? smile

Код

public string ConnectionString
{
 get 
 {
   if(_connectionString == null) _connectionString = ....;
   return _connectionString;
 }
}
например так.

Автор: ДобренькийПапаша 11.8.2011, 11:47
Я думаю загружать xml-файл в статическое поле. А в актуальности можно убедиться, подписавшись на событие, предоставляемое классом а-ля FileWatcher, который проверит изменялся ли xml-файл и в событии обновить поле, если файл изменялся.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)