先建一个类继承于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 == )
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 == )
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 == )
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 == )
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", );
UserSettings.Instance.Save();

获取已经存储的值

UserSettings.Instance.Get<int>("TestValue", );

转载:http://www.cnblogs.com/PanLiang/p/4723507.html

												

ApplicationSettingsBase运用的更多相关文章

  1. VS C#开发中WinForm中Setting.settings的作用

    .定义 在Settings.settings文件中定义配置字段.把作用范围定义为:User则运行时可更改,Applicatiion则运行时不可更改.可以使用数据网格视图,很方便: .读取配置值 tex ...

  2. A WPF/MVVM Countdown Timer

    Introduction This article describes the construction of a countdown timer application written in C# ...

  3. 【.net 深呼吸】自己动手来写应用程序设置类

    在开始装逼之前,老周先说明一件事.有人说老周写的东西太简单了,能不能写点复杂点.这问题就来了,要写什么东西才叫“复杂”?最重要的是,写得太复杂了,一方面很多朋友看不懂,另一方面,连老周自己也不知道怎么 ...

  4. 在windows2012上安装MSSQL 2008 Manage Studio 出现错误

    在windows2012上安装MSSQL 2008 Manage Studio 出现错误: 解决方法:重新建立一个管理员账户,用另外一个账户登陆,然后安装. 原因:未知 --------------- ...

  5. C# winform中Setting.settings 相关知识点

    1.在Settings.settings文件中定义配置字段.包含字段名.类型.范围.值四部分的属性. 字段名.类型和值类似编程中字段的定义一样使用,不再过多的解释.重点讲一下”范围“字段的含义与区别. ...

  6. VS2008中的配置文件app.config简单小结

    应用程序的配置文件用于读取和保存简单的本地数据,vs中新增配置文件可以直接在项目的”属性“-”设置“里添加,添加后在项目的Properties文件夹会多出一组两个文件:Settings.setting ...

  7. C# Settings.settings的用处

    1.定义 在Settings.settings文件中定义配置字段.把作用范围定义为:User则运行时可更改,Applicatiion则运行时不可更改.可以使用数据网格视图,很方便: 2.读取配置值 t ...

  8. C# Setting.settings . 用法

    1.定义 在Settings.settings文件中定义配置字段.把作用范围定义为:User则运行时可更改,Applicatiion则运行时不可更改.可以使用数据网格视图,很方便: 2.读取配置值 t ...

  9. C#中使用设置(Settings.settings) Properties.Settings.Default .(配置文件相当重要)

    C#中使用设置(Settings.settings) Properties.Settings.Default . 2016年08月04日 15:02:43 zxd9790902 阅读数:10664更多 ...

随机推荐

  1. JS递归及二叉搜索树的移除节点

    1递归含义:在某时某刻某个条件下调用包含自己的函数 2:注意点:⑴递归过程中一定要加限制条件,要不然会陷入死循环: 死循环eg: function f(someP){ f(somP); } f(4); ...

  2. 2019-11-29-VisualStudio-2019-尝试使用-C#-8.0-新的方式

    title author date CreateTime categories VisualStudio 2019 尝试使用 C# 8.0 新的方式 lindexi 2019-11-29 08:41: ...

  3. PHP5 构造函数

    在最近自己写的PHP小程序中遇到了如何使用PHP构造函数的情况,在PHP中允许我们在一个类中定义一个构造函数 如: <?php class User { public $name; functi ...

  4. Delphi 帮助的使用

  5. Delphi7 IDE

  6. kill - 终止进程

    SYNOPSIS(总览) kill[-ssignal|-p][-a]pid... kill -l [ signal ] DESCRIPTION (描述) kill 给指定进程发送指定信号. 如果没有指 ...

  7. lvs工作方式和调度算法

    LVS工作原理可以简单理解为: Lvs工作在内核空间,本身工作在input链上,与iptable不能同时用. LVS: ipvsadm :管理集群服务的工具,用来写规则 Ipvs 工作在内核. 工作原 ...

  8. Codeforces 903 绝对值1e19longdouble算贡献 汉明距离交换两项是否可行

    A /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) #define pb push_bac ...

  9. P1086 花生采摘题解

    这道题只是普通的模拟,不是贪心! 重点在于这句话:“然后再找出剩下的植株里花生最多的,去采摘它的花生”. 也就是,你下一个必须找到剩下花生最多的,而不是按照贪心思想来考虑在限定时间内的最优解 那么,应 ...

  10. 通过源码安装PostgresSQL

    通过源码安装PostgresSQL 1.1 下载源码包环境: Centos6.8 64位 yum -y install bison flex readline-devel zlib-devel yum ...