ApplicationSettingsBase运用
时间:2022-03-13 19:36
先建一个类继承于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; } } } } UserSettingsView Code
再建一个接口类
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(); } } IUserSettingsView Code
存储值到本地,值将会被保存到系统盘个人文件夹目录里
UserSettings.Instance.Set<int>("TestValue", 23456); UserSettings.Instance.Save();
获取已经存储的值
UserSettings.Instance.Get<int>("TestValue", 0);
转载:http://www.cnblogs.com/PanLiang/p/4723507.html
相关推荐
- Android系统编程入门系列之界面Activity交互响应
- 新型横向移动工具原理分析、代码分析、优缺点以及检测方案
- uni-app滚动视图容器(scroll-view)之监听上拉事件
- uniapp h5,app两端复制文本
- Android系统编程入门系列之界面Activity响应丝滑的传统动画
- 【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn
- 诺基亚短信生成!太好玩了
- iOS 跳转App Store进行评分
- 开发一个即时通讯App
- 关闭苹果IOS app自动更新
电脑软件
本类排行
- 1关闭苹果IOS app自动更新
- 2iOS 跳转App Store进行评分
- 3诺基亚短信生成!太好玩了
- 4Android系统编程入门系列之界面Activity响应丝滑的传统动画
- 5uniapp h5,app两端复制文本
- 6uni-app滚动视图容器(scroll-view)之监听上拉事件
- 7新型横向移动工具原理分析、代码分析、优缺点以及检测方案
- 8Android系统编程入门系列之界面Activity交互响应
- 9开发一个即时通讯App
- 10【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn