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

原文:在配置文件(.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;

}

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

引入刚才的项目:

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

在程序中编写测试代码:

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();

}

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

 

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

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

 

结语

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

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

 

下载

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

时间: 2024-10-23 20:06:56

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

在Apache目录服务器中存储Java对象,第2部分:(上)

在 ApacheDS 中存储.搜索和检索 Java 对象 简介:在第 2 部分中将介绍如何在 Apache 目录服务器 (ApacheDS) 中存储 Java 对象, Bilal Siddiqui 将提供 9 个示例应用程序,演示在 第 1 部分 中学习的概念.除 了介绍使用 ApacheDS 存储.搜索.检索和修改 Java 对象的所有步骤之外,Bilal 还将在总结全文时提 供一个可重用的 Java 类,该类可以使用 LDAP 模式组件在 ApacheDS 中将这些功能组合在一起. 在 第

asp.net web api get请求能在主体中包含自定义对象吗

问题描述 asp.net web api get请求能在主体中包含自定义对象吗 大家好,我的问题是我现在想提供一个判断服务接口,就是客户端传给我一个人的id 和此人的照片(20K左右),我这边接收然后判断并返回结果{result:1}或者{result:0}, 本人刚接触asp.net web api,没有经验,我想用Get方法来解决这个问题,我开始把 参数都放在URI中,接收的照片数据长度不足,于是我想把参数组成一个自定义对象放 在请求消息主体里面,请问怎么才能实现呢,非常感谢你的耐心,谢谢帮

.net 如何在web.config中读取自定义节点以及注意的问题

web|问题 这几天在做一个urlMapping类库的时候用到了如何读取web.config中自定义节点, 做完后觉得挺好 现就制作过程叙述一下. web.config文件在web application中起着非常重要的作用. 它本身包含了授权,handler,compilation,globalization,错误与跟踪等一系列设置.但是当你需要一些特殊的或者想添加自己的settings时,应该如何做呢? 要创建自定义设置 要求有2步:写cs代码 和 修改web.config 代码 这里我们创

在Apache目录服务器中存储Java对象,第1部分

简介:这个两部分的系列介绍了在 Apache 目录服务器(ApacheDS)中保存 Java 对象的步骤 .在第 1 部分中,作者 Bilal Siddiqui 介绍了 ApacheDS,并提供了 ApacheDS 核心架构的概述.因为 主要把 ApacheDS 用作保存 Java 对象的 LDAP 服务器,所以 Bilal 提供了对 LDAP 概念和术语的快速 概述.他还介绍了如何用 JXplorer 查看 LDAP 模式组件,例如属性类型和对象类,还介绍了如何在 ApacheDS 中输入数据

Javascript 中创建自定义对象的方法汇总_javascript技巧

Javascript 中创建对象,可以有很多种方法. Object构造函数/对象字面量: 抛开设计模式不谈,使用最基本的方法,就是先调用Object构造函数创建一个对象,然后给对象添加属性. 复制代码 代码如下:      var student = new Object();      student.name = "xiao ming";      student.age = 20;      student.getName = function () {          ale

Powershell中创建自定义对象例子_PowerShell

支持3.0及以后版本 下面是一个简单有效的创建一个自定义对象的方法: 复制代码 代码如下: $object = [PSCustomObject]@{   Name = 'Weltner'   ID = 123   Active = $true } 这将产生一个含初始值的对象: 复制代码 代码如下: PS> $object   Name                                                ID                    Active ---- 

在Apache目录服务器中存储Java对象,第2部分:(下)

应用程序 4. 搜索存储的数据 先从 ApacheDS 上的一个简单搜索开始.假设在 ApacheDS 中有许多用户.而您想要找到用户 Alice 的所有详细信息.下面列出了关于 Alice 的所有已知事项: Alice 是一名用户,所以在用户的数据组织单元中应当可以查找她的数据条目.(在第 1 部分已经介 绍了组织单元或 "ou" 的概念.) Alice 的用户名是 "alice"(不区分大小写). Alice 是一个人,所以她的数据条目使用的对象类必须直接或间接

艾伟_转载:ASP.NET中写自定义的Config Provider

一.写作前题     我们用ASP.NET做项目开发的时候,配置Config文件那是经常的事情,VS.NET的Config文件提供了很多节,但是往往提供的这些配置信息还不能够完全满足我们的项目开发需求,而且微软正是考虑到这方面的因素,他允许用户自定义Configuration的相关配置内容.本文就此写了一些实例,希望对大家有所帮助.   二.本文内容   1.实现web.config中的自定义2.对自定义节的使用3.本文总结 三.实现Web.Config中自定义节     废话不多说,直接说主题

运行时修改Web.config中的元素值 zhenyu(原作)

大家都知道Asp.Net提供了一个WebApplication的配置文件web.config,让我们可以很方便地设置Web应用程序,另外还可以在appSettings节中增加一些我们常要使用的单元,如数据库连接串等,利用System.Configuration.ConfigurationSetting类我们可以很容易读取这些单元的值,但是要改变这些值就需要一些技巧了,下面我就来告诉大家如何在运行时利用System.Management中的类去改变这些单元的值. 现假设您有一个WebApplica