溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C#使用單例模式類獲取本地程序目錄下XML文件中的配置信息

發(fā)布時(shí)間:2020-06-22 07:41:09 來(lái)源:網(wǎng)絡(luò) 閱讀:587 作者:個(gè)vvjkhgg林 欄目:編程語(yǔ)言

單例模式是一種常用的軟件設(shè)計(jì)模式,在它的核心結(jié)構(gòu)中只包含一個(gè)被稱為單例的特殊類。

通過(guò)單例模式可以保證系統(tǒng)中一個(gè)類只有一個(gè)實(shí)例,即一個(gè)類只有一個(gè)對(duì)象實(shí)例。

這一模式的目的是使得類的一個(gè)對(duì)象稱為系統(tǒng)中的唯一實(shí)例。

單例模式的要點(diǎn)有三個(gè):一是該類只能有一個(gè)實(shí)例;二是該類必須自行創(chuàng)建這個(gè)實(shí)例;三是該類必須自行向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。

從具體實(shí)現(xiàn)角度來(lái)說(shuō),就是以下三點(diǎn):

  1. 單例模式的類只提供私有的構(gòu)造函數(shù);

  2. 類的定義中含有一個(gè)該類的靜態(tài)私有對(duì)象;

  3. 該類提供了一個(gè)靜態(tài)且公用的函數(shù)用于創(chuàng)建或者獲取它本身的靜態(tài)私有對(duì)象;

個(gè)人覺(jué)得對(duì)于初級(jí)程序而言,技能知識(shí)的學(xué)習(xí)要理論和代碼一起研究,才能夠做到心領(lǐng)神會(huì),下面就奉上小編自己敲的代碼以供你參考,當(dāng)然你也可以直接下載后在本地查看!

using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Xml;


namespace WpfApp.Practices

{


    public class getXMLConfigInfo

    {

        #region 定義一個(gè)獲取本地XML配置信息的單例模式類 getXMLConfigInfo

        //定義一個(gè)靜態(tài)且私有的getXMLConfigInfo的類對(duì)象XMLConfigInstance并賦為空

        private static getXMLConfigInfo XMLConfigInstance = null;

        //定義一個(gè)靜態(tài)且公用的方法用于統(tǒng)一調(diào)用該類中的方法

        public static getXMLConfigInfo getXMLConfigInstance()

        {

            if(XMLConfigInstance == null)

            {

                XMLConfigInstance = new getXMLConfigInfo();

            }

            return XMLConfigInstance;

        }

        //自定義一個(gè)私有的構(gòu)造函數(shù)

        private getXMLConfigInfo()

        {

            //getXMLConfigRoot("SystemConfigs");

        }

        #endregion

        /// <summary>

        /// 加載本地SystemConfig.xml文件并查找根節(jié)點(diǎn)

        /// </summary>

        /// <param name="singleNode">傳入要查找的節(jié)點(diǎn)</param>

        /// <returns></returns>

        public XmlNode getXMLConfigRoot(string singleNode)

        {

            //創(chuàng)建一個(gè)XmlDocument對(duì)象

            XmlDocument xmlDoc = new XmlDocument();

            //定義并獲取程序運(yùn)行時(shí)的本地路徑

            String xmlPath = System.Environment.CurrentDirectory;

            //判斷該路徑下是否存在SystemConfig.xml文件

            if(!File.Exists(xmlPath + "\\SystemConfig.xml"))

            {

                throw new Exception("This File isn't Exist!");

            }

            //加載SystemConfig.xml文件

            xmlDoc.Load(xmlPath + "\\SystemConfig.xml");

            //選中SystemConfig.xml文件中的根節(jié)點(diǎn)

            XmlNode root = xmlDoc.SelectSingleNode("SystemConfigs");

            //定義需要查找的節(jié)點(diǎn)

            XmlNode NeedRoot = null;

            //遍歷根節(jié)點(diǎn)下的所有子節(jié)點(diǎn)

            foreach(XmlNode childNode in root.ChildNodes)

            {

                //如果遍歷得到的子節(jié)點(diǎn)與所需要查找的節(jié)點(diǎn)相同,則返回該節(jié)點(diǎn)

                if(childNode.Name.Equals(singleNode))

                {

                    NeedRoot = root.SelectSingleNode(singleNode);

                }

            }

            return NeedRoot;

        }


        /// <summary>

        /// 獲取SystemConfig.xml文件中的預(yù)留電話/手機(jī)號(hào)碼

        /// </summary>

        /// <param name="type">傳入要獲取的節(jié)點(diǎn)的屬性名稱</param>

        /// <returns></returns>

        public string getPersonalContactInfo(string type)

        {

            //得到所需的節(jié)點(diǎn)屬性的父節(jié)點(diǎn)

            XmlNode NeededRoot = getXMLConfigRoot("SelfPrePhone");

            //定義變量用于暫時(shí)保存獲取出來(lái)的節(jié)點(diǎn)屬性的值

            string NeedValue = "";

            //如果所需杰節(jié)點(diǎn)屬性的父節(jié)點(diǎn)不存在,則拋出錯(cuò)誤信息

            if (NeededRoot == null)

            {

                throw new Exception("讀取配置節(jié)點(diǎn)SelfPrePhone文件錯(cuò)誤");

            }

            //遍歷所需節(jié)點(diǎn)的所有屬性,并返回所查找的屬性的值

            foreach (XmlNode NeedTypeChildNode in NeededRoot.ChildNodes)

            {

                NeedValue = NeedTypeChildNode.Attributes[type].Value;

            }

            return NeedValue;

        }

    }

}

以上的代碼便是單例模式寫的獲取本地XML文件中的配置信息的類


<SystemConfigs>


  <AutoCloseSystemSet>

    <CloseSystemTimeSet  CloseTime="14:30:00"/>

  </AutoCloseSystemSet>


  <SelfPrePhone>

    <PrePhone    tel="0571-81234567"   Phone="18765432173"></PrePhone>

  </SelfPrePhone>


</SystemConfigs>

這段XML便是本地SystemConfig.xml文件中的內(nèi)容信息


  string test1 = getXMLConfigInfo.getXMLConfigInstance().getPersonalContactInfo("Phone");

  string test3 = getXMLConfigInfo .getXMLConfigInstance().getPersonalContactInfo("tel");

以上兩個(gè)語(yǔ)句便是通過(guò)單例模式類getXMLConfigInfo來(lái)獲取在SystemConfig.xml中配置的預(yù)留手機(jī)號(hào)和預(yù)留電話號(hào)碼的前端寫法。

                                                                                                                        感謝你耐心閱讀完本文,祝你學(xué)習(xí)愉快昂,哈哈。。。。。。

附件:http://down.51cto.com/data/2367042
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI