在配置文件(.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,如需转载请自行联系原作者

相关文章
|
6月前
webpack.config.js配置文件报错:The ‘mode‘ option has not been set
webpack.config.js配置文件报错:The ‘mode‘ option has not been set
96 0
|
3月前
文件名: ?Ciwindows\system32 inetsrconfiglapplicationHost.config 错误:无法写入配置文件
文件名: ?Ciwindows\system32 inetsrconfiglapplicationHost.config 错误:无法写入配置文件
50 0
|
1月前
|
JavaScript
webpack学习五:webpack的配置文件webpack.config.js分离,分离成开发环境配置文件和生产环境配置文件
这篇文章介绍了如何将webpack的配置文件分离成开发环境和生产环境的配置文件,以提高打包效率。
44 1
webpack学习五:webpack的配置文件webpack.config.js分离,分离成开发环境配置文件和生产环境配置文件
service方法的介绍,及如何将config对象如何提升作用域
service方法的介绍,及如何将config对象如何提升作用域
|
5月前
|
存储 Kubernetes 安全
云上攻防-云原生篇&K8s安全&Config泄漏&Etcd存储&Dashboard鉴权&Proxy暴露
云上攻防-云原生篇&K8s安全&Config泄漏&Etcd存储&Dashboard鉴权&Proxy暴露
126 5
|
5月前
|
XML 开发框架 .NET
【已解决】请在位于当前 Web 应用程序根目录下的“web.config”配置文件中创建一个 <customErrors> 标记
【已解决】请在位于当前 Web 应用程序根目录下的“web.config”配置文件中创建一个 <customErrors> 标记
|
6月前
|
XML 开发框架 .NET
C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作
C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作
70 1
|
2月前
|
算法 安全 Java
微服务(四)-config配置中心的配置加解密
微服务(四)-config配置中心的配置加解密
|
28天前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
129 0
|
2月前
|
JavaScript
Vue3基础(19)___vite.config.js中配置路径别名
本文介绍了如何在Vue 3的Vite配置文件`vite.config.js`中设置路径别名,以及如何在页面中使用这些别名导入模块。
77 0
Vue3基础(19)___vite.config.js中配置路径别名

热门文章

最新文章

  • 1
    Spring Boot与Spring Cloud Config的集成
    211
  • 2
    若依修改标题和icon,在vue.config.js和.env.development进行修改
    311
  • 3
    若依修改,若依的com.ruoyi.framework.config在那?搜索文件使用ctrl+shift+f不用搜狗输入法,其他輸入法,用英文
    43
  • 4
    若依修改,若依部署在本地运行时的注意事项,后端连接了服务器,本地的vue.config.js要先改成localhost:端口号与后端匹配,部署的时候再改公网IP:端口号
    152
  • 5
    部署常用的流程,可以用后端,连接宝塔,将IP地址修改好,本地只要连接好了,在本地上前后端跑起来,前端能够跑起来,改好了config.js资料,后端修改好数据库和连接redis,本地上跑成功了,再改
    70
  • 6
    若依修改---重新部署项目注意事项,新文件初始化需要修改的地方,打包后的文件很难进行修改,如果想要不断修改项目,注意保存原项目,才可以不断修改,前端:在Vue.config.js文件中修改target
    126
  • 7
    若依修改之后,无法访问前端项目如何解决,只能访问后端的接口,我的接口8083,端不显示咋解决?在vue.config.js文件中的映射路径要跟后端匹配,到软件商店里找到Ngnix配置代理,设80不用加
    602
  • 8
    文本vitepress,如何设置背景图,如何插入背景图,如何插入logo,为了放背景图片,我们要新建pubilc的文件夹,插入logo要在config.js中进行配置,注意细节,在添加背景时,注意格式
    135
  • 9
    文本,vitepress的使用,如何使用vitevitepress没有config.js该怎么办?这里使用vitepress进行手动配置,参考只爭朝夕不負韶華的文章
    64
  • 10
    vue 配置【详解】 vue.config.js ( 含 webpack 配置 )
    65