У меня есть огромный XML-документ, который мне нужно проанализировать для создания объектов домена.
Поскольку документ огромен, я не хочу анализировать его каждый раз, когда пользователь его запрашивает, а только в первый раз, а затем сохранять все объекты в кеше.
public List<Product> GetXMLProducts()
{
if (HttpRuntime.Cache.Get("ProductsXML") != null)
{
return (List<Product>)(HttpRuntime.Cache.Get("ProductsXML"));
}
string xmlPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Content\\Products.xml");
XmlReader reader = XmlReader.Create(xmlPath);
XDocument doc = XDocument.Load(reader);
List<Product> productsList = new List<Product>();
// Parsing the products element
HttpRuntime.Cache.Insert("ProductsXML", productsList);
return productsList;
}
Как лучше всего заставить эту функцию работать в синглтоне и быть потокобезопасной -?
Исправлен метод сохранения объекта в кеш (было копирование -ошибка вставки)