zoukankan      html  css  js  c++  java
  • Config类

    代码
    using System;
    using System.Xml;
    using System.Collections;
    using System.IO;

    namespace Rocky
    {
    public sealed class Config : IEnumerable
    {
    public static readonly string ConfigPath;

    static Config()
    {
    ConfigPath
    = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Rocky.config");
    }

    private XmlNode appNode;

    public XmlNode AppNode
    {
    get { return appNode; }
    }

    public string this[string appKey]
    {
    set
    {
    lock (appNode)
    {
    XmlElement xElem
    = (XmlElement)appNode.SelectSingleNode("//add[@key='" + appKey + "']");
    if (xElem == null)
    {
    xElem
    = appNode.OwnerDocument.CreateElement("add");
    xElem.SetAttribute(
    "key", appKey);
    xElem.SetAttribute(
    "value", value);
    appNode.AppendChild(xElem);
    }
    else
    {
    if (value == null)
    {
    appNode.RemoveChild(xElem);
    }
    else
    {
    xElem.SetAttribute(
    "value", value);
    }
    }
    appNode.OwnerDocument.Save(ConfigPath);
    }
    }
    get
    {
    XmlElement xElem
    = (XmlElement)appNode.SelectSingleNode("//add[@key='" + appKey + "']");
    if (xElem == null)
    {
    throw new NullReferenceException();
    }
    return xElem.GetAttribute("value");
    }
    }
    public string this[int index]
    {
    set
    {
    XmlNodeList list
    = appNode.SelectNodes("//add");
    if (index >= 0 && index < list.Count)
    {
    lock (appNode)
    {
    XmlElement xElem
    = (XmlElement)list[index];
    if (value == null)
    {
    xElem.ParentNode.RemoveChild(xElem);
    }
    else
    {
    xElem.SetAttribute(
    "value", value);
    }
    appNode.OwnerDocument.Save(ConfigPath);
    }
    }
    }
    get
    {
    XmlNodeList list
    = appNode.SelectNodes("//add");
    if (index >= 0 && index < list.Count)
    {
    return ((XmlElement)list[index]).GetAttribute("value");
    }
    throw new NullReferenceException();
    }
    }

    internal Config()
    {
    XmlDocument xDoc
    = new XmlDocument();
    xDoc.Load(ConfigPath);
    appNode
    = xDoc.SelectSingleNode("//appSettings");
    if (appNode == null)
    {
    throw new ArgumentException();
    }
    }

    public IEnumerator GetEnumerator()
    {
    return appNode.SelectNodes("//add").GetEnumerator();
    }
    }
    }

  • 相关阅读:
    phpstorm插件等相关推荐
    Item Pipeline
    没有返回值的构造函数是怎么完成赋值的?
    vue中如何实现点击变成全屏
    vue操作dom元素的三种方法
    陈同学整理的10个可以写到简历上C++项目
    从四个问题透析Linux下C++编译&链接
    C++隐式推导-auto关键词
    从今天起构建你的JavaScript世界
    vue中实现模态框弹出框动画(旋转弹出)
  • 原文地址:https://www.cnblogs.com/Googler/p/1939929.html
Copyright © 2011-2022 走看看