700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 在配置文件(.settings .config)中存储自定义对象

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

时间:2023-09-08 14:07:31

相关推荐

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

引言

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

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

范例

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

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

publicclassMyClass

{

publicDateTimetime

{

get

{

return_time;

}

set

{

_time=value;

}

}

privateDateTime_time;

publicintnum

{

get

{

return_num;

}

set

{

_num=value;

}

}

privateint_num;

}

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

publicclassMyClassList

{

publicList<MyClass>list

{

get

{

return_list;

}

set

{

_list=value;

}

}

privateList<MyClass>_list;

}

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

引入刚才的项目:

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

在程序中编写测试代码:

staticvoidMain(string[] args)

{

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

Randomr=newRandom();

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

if(Settings1.Default.MyClassList==null)

{

Settings1.Default.MyClassList=newSettingTest2.MyClassList();

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

}

//遍历输出所有项

foreach(varfinSettings1.Default.MyClassList.list)

{

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

}

Console.Read();

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

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

Settings1.Default.Save();

}

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

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

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

结语

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

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

下载

本文的XPS版本:/user/icesee/file/2273504

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。