Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXperience 13.1 Demos/ASP.NET/CS/MVCDemos.Razor/Code/
Upload File :
Current File : C:/Users/Public/Documents/DXperience 13.1 Demos/ASP.NET/CS/MVCDemos.Razor/Code/ThemesModel.cs

using System.Xml.Serialization;
using System.Collections.Generic;
using System.IO;
using System.Web;

namespace DevExpress.Web.Demos {

    [XmlRoot("Themes")]
    public class ThemesModel {
        static ThemesModel _current;
        static readonly object _currentLock = new object();

        public static ThemesModel Current {
            get {
                lock(_currentLock) {
                    if(_current == null) {
                        using(Stream stream = File.OpenRead(HttpContext.Current.Server.MapPath("~/App_Data/Themes.xml"))) {
                            XmlSerializer serializer = new XmlSerializer(typeof(ThemesModel));
                            _current = (ThemesModel)serializer.Deserialize(stream);
                        }
                    }
                    return _current;
                }
            }
        }

        List<ThemeGroupModel> _groups = new List<ThemeGroupModel>();

        [XmlElement("ThemeGroup")]
        public List<ThemeGroupModel> Groups {
            get { return _groups; }
        }        
    }

}