| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | using System.Collections.Generic;using System.IO;using System.Reflection;using InABox.Configuration;using Microsoft.Win32;namespace PRS.Shared{    /*public abstract class RegistryConfigurationSettings : IConfigurationSettings    {        public abstract void Load(RegistryKey key);        public abstract void Save(RegistryKey key);    }    public class RegistryConfiguration<T> : Configuration<T> where T : RegistryConfigurationSettings, new()    {        private readonly RegistryKey _key;        public RegistryConfiguration(string section = "") : base(section)        {            _key = Registry.LocalMachine.OpenSubKey("Software");            _key = OpenOrCreate(_key, "PRS");            _key = OpenOrCreate(_key, Path.GetFileNameWithoutExtension(Assembly.GetEntryAssembly().Location));            if (string.IsNullOrWhiteSpace(section))                _key = OpenOrCreate(_key, section);        }        public override T Load()        {            var cached = ConfigurationCache.Check<T>(ConfigurationCacheType.Local, Section);            if (cached != null)                //Logger.Send(LogType.Information, "", "Local Config: Returning Cached Configuration Data");                return cached;            //Logger.Send(LogType.Information, "", "Local Config: Creating "+typeof(T).EntityName().Split('.').Last());            var result = new T();            result.Load(_key);            //Logger.Send(LogType.Information, "", "Local Config: Adding Configuration to Cache");            ConfigurationCache.Add(ConfigurationCacheType.Local, Section, result);            return result;        }        public override Dictionary<string, T> LoadAll()        {            var results = new Dictionary<string, T>();            var sections = _key.GetSubKeyNames();            foreach (var section in sections)            {                var _subkey = _key.OpenSubKey(section, true);                var result = new T();                result.Load(_subkey);                results[section] = result;            }            return results;        }        public override void Save(T obj)        {            obj.Save(_key);            ConfigurationCache.Add(ConfigurationCacheType.Local, Section, obj);        }        public override void SaveAll(Dictionary<string, T> objs)        {            throw new System.NotImplementedException();        }        public override void Delete()        {            var key = GetParent();            if (string.IsNullOrWhiteSpace(Section))                key.DeleteSubKeyTree(Path.GetFileNameWithoutExtension(Assembly.GetEntryAssembly().Location));            else                key.DeleteSubKeyTree(Section);            ConfigurationCache.Clear<T>(ConfigurationCacheType.Local, Section);        }        public override string[] Sections()        {            return _key.GetSubKeyNames();        }        public RegistryKey GetParent()        {            var result = Registry.LocalMachine.OpenSubKey("Software");            result = OpenOrCreate(result, "PRS");            if (!string.IsNullOrWhiteSpace(Section))                result = OpenOrCreate(result, Path.GetFileNameWithoutExtension(Assembly.GetEntryAssembly().Location));            return result;        }        private RegistryKey OpenOrCreate(RegistryKey key, string name)        {            var result = key.OpenSubKey(name, true);            if (result == null)                result = key.CreateSubKey(name, true);            return result;        }    }*/}
 |