先建一个类继承于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. HashMap 的实现原理(1.7)

    参考 :http://wiki.jikexueyuan.com/project/java-collection/hashmap.html https://blog.csdn.net/w22981192 ...

  2. QWidget 设置背景图片

    QWidget 设置背景图片办法: 利用 QPaltette QPixmap pixmap("back.png"); QPalette palette; palette.setBr ...

  3. php正则替换非站内链接 替换zencart描述内的非本站链接

    php正则替换非站内链接 <?php //要替换的文本,比如产品描述中的文字 header("content-Type: text/html; charset=utf-8") ...

  4. dns服务的基本配置

    本文环境:CentOS 7 简介 DNS(Domain Name System)即域名服务系统,是Internet上用的最频繁的服务之一,它的本质是一个范围很广的分布式数据库,组织成域层次结构的计算机 ...

  5. redis中如何存储java对象

    根据redis的存储原理,Redis的key和value都支持二进制安全的字符串 1.利用序列化和反序列化的方式 存储java对象我们可以通过对象的序列化与反序列化完成存储于取出,这样就可以使用red ...

  6. 从mysql8.0.15升级到8.0.16

    从mysql8.0.15升级到8.0.16 环境简介 操作系统:Centos 6.10 64位 目前版本:8.0.15 MySQL Community Server 二进制 目的:升级为8.0.16 ...

  7. APIview的请求生命周期源码分析

    目录 APIview的请求生命周期源码分析 请求模块 解析模块 全局配置解析器 局部配置解析器 响应模块 异常处理模块 重写异常处理函数 渲染模块 APIview的请求生命周期源码分析 Django项 ...

  8. 【leetcode】Reorganize String

    题目如下: Given a string S, check if the letters can be rearranged so that two characters that are adjac ...

  9. app自动化的执行

    appium --address 127.0.0.1 --port 10000 --bootstrap-port 10100 --webdriveragent-port 10110 在指定的目录下执行 ...

  10. C# 向上取整数

    PageCount = personInfodb.get_count(selected_id); //数据总数 PageCount = (int)Math.Ceiling(PageCount / (P ...