在C#应用中,设计自己的配置文件
来源:百度文库 编辑:神马文学网 时间:2024/04/29 00:37:21
在C#应用中,设计自己的配置文件作者:老田 日期:2008-9-2 20:11:42 出处:csdn blog第 [1] 页在系统开发的过程中,我们总是需要使用配置文件来保存一些我们需要保存的系统参数,毕竟这是.Net时代,如果再使用注册表那就显得复杂了,毕竟操作注册表的API并不是哪么容易理解的。所以在.net应用程序中,都默认出现一个App.Config(对于 Web应用程序是Web.Config)我们可以将系统运行所需要的参数采用加密或者明文的方式保存在这个文件中。但是当我们需要大量的,并且有一定逻辑结构的数据,希望也能够保存到配置文件中,此时我们可能这样做:将这些数据构造成DataSet,然后使用DataSet.WriteXML直接写成XML文件,读取的时候直接使用DataSet.LoadXML。另外一种方式就是直接操作XML数据,使用XmlDocument。第一种方法虽然是好,因为我们可以想操作数据库表一样操作我们的结构化的数据,可是在某些情况下,总觉得怪怪的。并且增加列等等这些的操作觉得及其难受。特别是我们需要使用这些数据的时候,我们首先要去读文档,了解DataSet中的每个表以及每个字段的含义,所以此方法不可取。那第二种方法呢,这个更不可取。如果我们增加了某个字段,或者修改了数据的机构,那我们的代码修改起来是在也是比较复杂的事情。那有什么更好的方式来解决这个问题的呢?既然微软可以使用App.Config和Web.Config,可以使用ComfigManager来对这两个配置文件来进行管理,让我们非常方便地进行使用,那我们为何不可设计自己的ConfigManager呢?需求:我们这里以菜单结构作为例子来描述我们的想法。菜单,包括主菜单项,比如系统里面的“文件”,“编辑”等等,包括子菜单,比如“文件”下的“保存”,“另存为”等,子菜单下也包括下级子菜单。总之这是一个完全结构化的数据格式,当然使用菜单来举例主要是这东西我们每天都见到,所以很容易理解,如:
- public class Menu
- {
- private string _Name;
- private string _Text;
- private string _IconName;
- //...这里可能还有其他你需要变量
- private SubMenus _SubMenus;
- ///
- /// 注意,一定需要一个无参数的构造函数,否则序列化的时候出错
- ///
- public Menu()
- : this("", "", "")
- { }
- public Menu(string name, string text, string iconname)
- {
- this._Name = name;
- this._Text = text;
- this._IconName = iconname;
- this._SubMenus = new SubMenus();
- }
- ///
- /// 菜单名
- ///
- [XmlAttribute("Name")]
- public string Name
- {
- get { return this._Name; }
- set { this._Name = value; }
- }
- ///
- /// 菜单Text
- ///
- [XmlAttribute("Text")]
- public string Text
- {
- get { return this._Text; }
- set { this._Text = value; }
- }
- ///
- /// 菜单的图标名
- ///
- [XmlAttribute("IconName")]
- public string IconName
- {
- get { return this._IconName; }
- set { this._IconName = value; }
- }
- ///
- /// 子菜单
- ///
- public SubMenus SubMenus
- {
- get { return this._SubMenus; }
- set { this._SubMenus = value; }
- }
- }
- ///
- /// 子菜单列表
- ///
- public class SubMenus : List
- public class MenuStrip
- {
- //...您需要的其他变量
- private SubMenus _SubMenus;
- public MenuStrip()
- {
- this._SubMenus = new SubMenus();
- }
- public SubMenus SubMenus
- {
- get { return this._SubMenus; }
- set { this._SubMenus = value; }
- }
- ///
- /// 这里使用Static,方便调用
- ///
- ///
- public MenuStrip Load()
- {
- MenuStrip instance = new MenuStrip();
- XmlSerializer xs = new XmlSerializer(typeof(MenuStrip));
- StreamReader sr = new StreamReader(@"...\Menu.Config");
- instance = xs.Deserialize(sr) as MenuStrip;
- sr.Close();
- return instance;
- }
- public void Save()
- {
- XmlSerializer xs = new XmlSerializer(typeof(MenuStrip));
- StreamWriter sw = new StreamWriter(@"...\Menu.Config");
- xs.Serialize(sw, this);
- sw.Close();
- }
- }
- MenuStrip menustrip = new MenuStrip();
- //文件菜单
- Menu mnuFile = new Menu("mnuFile", "文件(&F)", "");
- mnuFile.SubMenus.Add(new Menu("mnuNew", "新建", ""));
- mnuFile.SubMenus.Add(new Menu("mnuSave", "保存", ""));
- mnuFile.SubMenus.Add(new Menu("mnuSaveAs", "另存为", ""));
- menustrip.SubMenus.Add(mnuFile);
- Menu mnuEdit = new Menu("mnuEdit", "编辑(&E)", "");
- mnuEdit.SubMenus.Add(new Menu("mnuCopy", "复制", ""));
- mnuEdit.SubMenus.Add(new Menu("mnuDelete", "删除", ""));
- mnuEdit.SubMenus.Add(new Menu("mnuCut", "剪切", ""));
- menustrip.SubMenus.Add(mnuEdit);
- menustrip.SubMenus.Add(new Menu("mnuView", "视图(&V)", ""));
- menustrip.Save();
在C#应用中,设计自己的配置文件
在C#应用中,设计自己的配置文件
Windows XP中硬件配置文件的应用技巧
如何在C#中加载自己编写的动态链接库(DLL) - liweihua200204的专栏
如何在C#中加载自己编写的动态链接库(DLL)
如何在C#中加载自己编写的动态链接库(DLL)
c#泛型和反射的设计应用(一) - yutao051的专栏 - CSDN博客
在C#工程中调用C++的DLL - Learning - 新言云语
在C#工程中调用C++的DLL
C#基础知识:C#中Trim的使用
如何在设计中应用颜色搭配技巧
如何在设计中应用颜色搭配技巧
QQ校友 - 如何在设计中应用颜色搭配技巧
C#中Split分隔字符串的应用(C#、split、分隔、字符串)
C#中类的size
C#中static的使用
|在C#程序中实现插件架构
在C#程序设计中使用Win32类库
在c#中使用vc++编写的封装在Dll中的类
创建Web应用和Struts框架的配置文件
多线程在Visual C#网络编程中的应用
多线程在Visual C#网络编程中的应用
在LOGO中应用你的名称
色彩在设计中的应用