在配置文件(.settings、.config)中存储自定义对象

简介:

引言

我前面曾写过一篇《使用配置文件(.settings、.config)存储应用程序配置》,我在其中指出“settings无法实现对一些复杂类型及自定义类型的支持”。

而今天我发现其实它是支持自定义类型的,仅仅是不能支持本项目中的自定义类型,可以支持引用的项目或类库的自定义类型。至于为什么不支持本项目中的自定义类型,我也不得而知,猜想可能是怕加载时造成冲突吧。

 

范例

我们来做一个使用自定义类型的配置文件范例。

首先新建一个类库项目,我这里以SettingTest2命名该项目,然后创建下面这样一个简单的类:

public class MyClass

{

    public DateTime time

    {

        get

        {

            return _time;

        }

        set

        {

            _time = value;

        }

    }

    private DateTime _time;

 

    public int num

    {

        get

        {

            return _num;

        }

        set

        {

            _num = value;

        }

    }

    private int _num;

}

由目前所知的情况看来,配置文件不支持泛型集合,所以当我们需要存储自定义类型的集合的时候,就要再创建一个用来存放该自定义类型集合的类:

public class MyClassList

{

    public List<MyClass> list

    {

        get

        {

            return _list;

        }

        set

        {

            _list = value;

        }

    }

    private List<MyClass> _list;

}

这样这个类库项目就搞好了,下面再建立一个控制台项目用于测试。

引入刚才的项目:

image

创建配置文件,建立一个新属性名为“MyClassList”,在其类型列表中点击最下面的“浏览…”,即可在弹出的对话框中找到刚才我们创建的类:

image

在程序中编写测试代码:

static void Main(string[] args)

{

    //初始化随机数生成对象

    Random r = new Random();

    //验证是否为空,如果为空的话就初始化一下

    if (Settings1.Default.MyClassList == null)

    {

        Settings1.Default.MyClassList = new SettingTest2.MyClassList();

        Settings1.Default.MyClassList.list = new List<SettingTest2.MyClass>();

    }

    //遍历输出所有项

    foreach (var f in Settings1.Default.MyClassList.list)

    {

        Console.WriteLine(string.Format("{0}:{1}", f.num, f.time));

    }

    Console.Read();

    //添加一条新项,并保存配置

    Settings1.Default.MyClassList.list.Add(new SettingTest2.MyClass { num = r.Next(1000), time =DateTime.Now });

    Settings1.Default.Save();

}

不断运行、关闭程序,以测试配置文件的使用情况:

image

 

很完美哈,再来看看生成的配置文件代码:

image

很好,跟我们自己XML序列化的没多大区别。

 

结语

这样一来,我们就能以面向对象的方式操作程序配置,又不用自己费力写序列化代码了,请各位善加利用吧:)

另外,关于泛型类型的支持,我觉得应该也是可以的吧,毕竟自定义类型中包含泛型集合的情况都可以被很好地支持,但没找到设置方法,难道说要手动改写配置文件了?期待高手解答。

 

下载

本文的XPS版本:http://www.uushare.com/user/icesee/file/2273504


本文转自斯克迪亚博客园博客,原文链接:http://www.cnblogs.com/SkyD/archive/2009/11/30/1614121.html,如需转载请自行联系原作者

相关文章
|
3月前
|
Web App开发 缓存 前端开发
VUE-CLI可选的配置文件vue.config.js
VUE-CLI可选的配置文件vue.config.js
29 0
|
24天前
|
Java 数据库连接 mybatis
Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
14 1
|
4月前
|
XML Java 数据库连接
MyBatis核心配置文件解析: 一步步深入理解mybatis-config.xml
MyBatis核心配置文件解析: 一步步深入理解mybatis-config.xml
92 0
MyBatis核心配置文件解析: 一步步深入理解mybatis-config.xml
|
5月前
|
数据库连接 C# 数据库
C#数据库连接配置文件存放至App.Config
将C#数据库连接配置文件存放到外置的App.config文件中,并且演示vs和Rider如何读取配置文件连接数据库
105 0
|
8月前
|
XML Java 数据库连接
mybatis-config.xml-配置文件详解
mybatis-config.xml-配置文件详解
215 0
|
1月前
|
Java 数据库连接 开发工具
web后端-SpringCloud-Config分布配置
web后端-SpringCloud-Config分布配置
|
2月前
|
API
在vite.config.js 配置代理
在vite.config.js 配置代理
63 2
|
2天前
|
JavaScript
vue.config.ts配置环境变量
vue.config.ts配置环境变量
10 0
|
27天前
|
移动开发 监控 小程序
mPaaS常见问题之uniapp ios端云打包的配置config文件如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
22 0
|
30天前
|
消息中间件 SpringCloudAlibaba Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
772 0

热门文章

最新文章