[本地存储值]ApplicationSettingsBase运用

眼前多少难甘事,自古男儿当自强。这篇文章主要讲述[本地存储值]ApplicationSettingsBase运用相关的知识,希望能为你提供帮助。

using System; using System.ComponentModel; namespace Concert.Configuration {public sealed class UserSettings : System.Configuration.ApplicationSettingsBase, Concert.Configuration.IUserSettings {private static readonly bool ThrowOnErrorDeserializing = false, ThrowOnErrorSerializing = false; private static IUserSettings defaultInstance = ((UserSettings)System.Configuration.ApplicationSettingsBase.Synchronized(new UserSettings())); private static readonly System.Configuration.SettingsAttributeDictionary SettingsAttributes = new System.Configuration.SettingsAttributeDictionary() { {typeof(System.Configuration.UserScopedSettingAttribute), new System.Configuration.UserScopedSettingAttribute()} }; private System.Configuration.SettingsProvider provider; private UserSettings() { }public static IUserSettings Instance { get { return defaultInstance; } }public void Register< T> (string name, T defaultValue) { if (name == null || name.Trim().Length == 0) throw new ArgumentNullException("name"); var property = this.Properties[name]; if (property == null) this.CreateSettingsProperty(name, typeof(T), defaultValue); }public bool Contains(string name) { if (name == null || name.Trim().Length == 0) throw new ArgumentNullException("name"); var property = this.Properties[name]; return property != null; }public void Set< T> (string name, T value) { if (this.Contains(name) == false) this.Register< T> (name, value); this[name] = value; }public T Get< T> (string name, T defaultValue) { if (name == null || name.Trim().Length == 0) throw new ArgumentNullException("name"); if (this.Contains(name)) { return (T)(this[name] ?? defaultValue); } else { this.CreateSettingsProperty(name, typeof(T), defaultValue); var val = this[name]; //if(val == null) this.Remove(name); return (T)(val ?? defaultValue); } }public void Remove(string name) { if (name == null || name.Trim().Length == 0) throw new ArgumentNullException("name"); //var property = this.Properties[key]; //if (property != null) this.PropertyValues.Remove(name); this.Properties.Remove(name); }private void CreateSettingsProperty(string name, Type propertyType, object defaultValue) { var property = new System.Configuration.SettingsProperty(name, propertyType, this.Provider, false, defaultValue, this.GetSerializeAs(propertyType), SettingsAttributes, ThrowOnErrorDeserializing, ThrowOnErrorSerializing); this.Properties.Add(property); }private System.Configuration.SettingsSerializeAs GetSerializeAs(Type type) { TypeConverter converter = TypeDescriptor.GetConverter(type); bool flag = converter.CanConvertTo(typeof(string)); bool flag2 = converter.CanConvertFrom(typeof(string)); if (flag & & flag2) { return System.Configuration.SettingsSerializeAs.String; } return System.Configuration.SettingsSerializeAs.Xml; }private System.Configuration.SettingsProvider Provider { get { if (this.provider == null & & (this.provider = this.Providers["LocalFileSettingsProvider"]) == null) { this.provider = new System.Configuration.LocalFileSettingsProvider(); this.provider.Initialize(null, null); this.Providers.Add(this.provider); } return this.provider; } }}}UserSettings

using System.ComponentModel; namespace Concert.Configuration { public interface IUserSettings : INotifyPropertyChanged { void Register< T> (string name, T defaultValue); bool Contains(string name); //object Get(string name, object defaultValue); T Get< T> (string name, T defaultValue); void Set< T> (string name, T value); void Reload(); void Save(); void Upgrade(); } }IUserSettings

存储值到本地,值将会被保存到系统盘个人文件夹目录里
UserSettings.Instance.Set< int> ("TestValue", 23456); UserSettings.Instance.Save();

 
【[本地存储值]ApplicationSettingsBase运用】获取已经存储的值
UserSettings.Instance.Get< int> ("TestValue", 0);


    推荐阅读