首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>NET专区>ASP.NET>asp.net如何自定义配置文件的探讨
asp.net如何自定义配置文件的探讨
来源: 发布时间:2008-09-02 发布人: 浏览: 人次   字体: [ ]  

  在软件系统开发中,我们需要使用配置文件来保存一些我们需要保存的系统参数,在.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;

    /// <summary>
    /// 注意,一定需要一个无参数的构造函数,否则序列化的时候出错
    /// </summary>
    public Menu()
        : this("", "", "")
    { }

    public Menu(string name, string text, string iconname)
    {
        this._Name = name;
        this._Text = text;
        this._IconName = iconname;

        this._SubMenus = new SubMenus();
    }

    /// <summary>
    /// 菜单名
    /// </summary>
    [XmlAttribute("Name")]
    public string Name
    {
        get { return this._Name; }
        set { this._Name = value; }
    }
    /// <summary>
    /// 菜单Text
    /// </summary>
    [XmlAttribute("Text")]
    public string Text
    {
        get { return this._Text; }
        set { this._Text = value; }
    }
    /// <summary>
    /// 菜单的图标名
    /// </summary>
    [XmlAttribute("IconName")]
    public string IconName
    {
        get { return this._IconName; }
        set { this._IconName = value; }
    }
    /// <summary>
    /// 子菜单
    /// </summary>
    public SubMenus SubMenus
    {
        get { return this._SubMenus; }
        set { this._SubMenus = value; }
    }
}
好,那我们菜单项包括子菜单,怎么表示呢?

我们使用一个List来保存我们的子菜单,为了更为直观,我们定义一个SubMenus的类,继承于List<Menu>

/// <summary>
/// 子菜单列表
/// </summary>
public class SubMenus : List<Menu>

}
下面我们就来构造我们的菜单MenuStrip。一个MenuStrip中,同样包括多个菜单,比如“文件”“编辑”“视图”等等。

在MenuStrip中,我们提供Load()函数,用于加载我们的菜单数据,提供Save()用于保存我们设置好的菜单数据:

public class MenuStrip
{
    //...您需要的其他变量
    private SubMenus _SubMenus;

    public MenuStrip()
    {
        this._SubMenus = new SubMenus();
    }

    public SubMenus SubMenus
    {
        get { return this._SubMenus; }
        set { this._SubMenus = value; }
    }

    /// <summary>
    /// 这里使用Static,方便调用
    /// </summary>
    /// <returns></returns>
    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();
    }
}
测试代码如下:


共2页: 上一页 1 [2] 下一页
相 关 文 章   发布商链接
·如何在asp.net刷新页面时不提示 "重...
·如何在asp.net中使用javascript获取s...
·asp.net动态生成txt文件并提供用户下...
·如何给FCKeditor编辑器进行精简操作
·小技巧解决Firefox中按下回车键重新...
·asp.net实现一次性上传多个图片或文...
·自动附加到计算机上的进程[3508] asp...
·如何在asp.net中合并DataGrid行?
·解决asp.net中ReportViewer控件日历...
·asp.net生成高清晰缩略图的方法源码
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·如何实现在DataList控件中的D...
·实例讲解asp.net生成高质量缩
·asp.net适用于IE或FireFox的...
·举例详解C#代码与javaScript...
·asp.net无刷新上传文件
·在Ie中保存图片时出现"800700...
·asp.net文件上传大小限制的控
·asp.net动态生成txt文本文件...
·asp.net实现将Excel文件导入...
·实现多列,带图片的DropDownLi...
·javascript实现TreeView 控件
·ASP.NET配置Word的操作权限
·让FileUpload控件在IE和FireF...
·ASP.NET实现Office文档的分类
·asp.net文件下载显示进度条的
热 门 文 章
·asp.net(C#)上传下载及文件管...
·图解asp.net如何用excel做报...
·asp.net无刷新上传文件
·Asp.Net防止刷新重复提交数据...
·asp.net实现将Excel文件导入...
·asp.net中Web.Config配置文件...
·ASP.NET取得物理路径和虚拟路...
·asp.net(c#)生成验证码代码,...
·asp.net页面回传与js调用服务...
·asp.net(C#版)实现登录验证码...
·DataGrid中DropDownList触发S...
·ASP.net 实现批量数据更新或...
·asp.net中DataBinder.Eval的...
·asp.net可输入的下拉框复合控...
·asp.net中常见的几种日历控件...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .