配置文件_自定义section标签获取数据

Posted lxhbky

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了配置文件_自定义section标签获取数据相关的知识,希望对你有一定的参考价值。

  前言:为了节约时间,先只粘贴关键代码:

1-添加section标签,name为自定义标签名称,type为:命名空间+类型,程序集名称

<section name="watchModel" type="DataCommon.Help.WatchModel,DataCommon" />

2-自定义标签数据:

  watchModel为自定义标签(ConfigurationSection),watchItems为自定义标签的数据集(ConfigurationElementCollection);add为数据集里的model(ConfigurationElement)。

<watchModel>
    <watchItems>
      <!--上   班-->
      <add ID="1" IsEnable="true" BeginTime="09:05:00" EndTime="09:15:00" MaxActionTimes="2" ActionSeconds="120" ActionName="SendTipsToDingding" ActionData="shangban" />
      <!--下   班-->
      <add ID="2" IsEnable="true" BeginTime="17:50:00" EndTime="18:05:00" MaxActionTimes="2" ActionSeconds="120" ActionName="SendTipsToDingding" ActionData="xiaban" />
      <!--每日BUG-->
      <add ID="3" IsEnable="true" BeginTime="09:10:00" EndTime="09:15:00" MaxActionTimes="1" ActionSeconds="0" ActionName="MyProjectBugTips" ActionData="" />
      <!--吃饭提醒-->
      <add ID="4" IsEnable="true" BeginTime="11:35:00" EndTime="11:40:00" MaxActionTimes="2" ActionSeconds="120" ActionName="SendTipsToDingding" ActionData="chifan" />
      <!--项目上线临时时间-->
      <add ID="5" IsEnable="true" BeginTime="14:05:00" EndTime="17:15:00" MaxActionTimes="10" ActionSeconds="30" ActionName="MyProjectBugTips" ActionData="bugCheck" />
    </watchItems>
  </watchModel>

3-创建自定义标签Model:

标签分为3部分,代码也对应3个继承类:ConfigurationSection,ConfigurationElementCollection,ConfigurationElement。

类的属性和标签属性使用:ConfigurationProperty("标签属性")进行对应,需要对get,set方法进行改造。

集合标签:需要对key,createElement,和下标获取对象方法,进行重构。

WatchModel watchModel = ConfigHelper.GetSectionT<WatchModel>("watchModel");
namespace DataCommon.Help

    public class WatchModel : ConfigurationSection
    
        [ConfigurationProperty("watchItems")]
        public WatchItems WatchItems
        
            get
            
                return this["watchItems"] as WatchItems;
            
            set
            
                this["watchItems"] = value;
            
        
    

    public class WatchItems : ConfigurationElementCollection
    
        protected override ConfigurationElement CreateNewElement()
        
            return new WatchItem();
        

        protected override object GetElementKey(ConfigurationElement element)
        
            return ((WatchItem)element).ID;
        

        public WatchItem this[object id]
        
            get
            
                return (WatchItem)base.BaseGet(id);
            
        
    

    public class WatchItem : ConfigurationElement
    
        /// <summary>
        /// 唯一标识
        /// </summary>
        [ConfigurationProperty("ID")]
        public int ID
        
            get
            
                return (int)this["ID"];
            
            set
            
                this["ID"] = value;
            
        
        /// <summary>
        /// 是否启用
        /// </summary>
        [ConfigurationProperty("IsEnable")]
        public bool IsEnable
        
            get
            
                return (bool)this["IsEnable"];
            
            set
            
                this["IsEnable"] = value;
            
        
        /// <summary>
        /// 开始时间(误差1秒=取决于计时器默认时间间隔)
        /// </summary>
        [ConfigurationProperty("BeginTime")]
        public string BeginTime
        
            get
            
                return (string)this["BeginTime"];
            
            set
            
                this["BeginTime"] = value;
            
        
        /// <summary>
        /// 结束时间
        /// </summary>
        [ConfigurationProperty("EndTime")]
        public string EndTime
        
            get
            
                return (string)this["EndTime"];
            
            set
            
                this["EndTime"] = value;
            
        
        /// <summary>
        /// 最大执行次数
        /// </summary>
        [ConfigurationProperty("MaxActionTimes")]
        public int MaxActionTimes
        
            get
            
                return (int)this["MaxActionTimes"];
            
            set
            
                this["MaxActionTimes"] = value;
            
        
        /// <summary>
        /// 计时周期内执行的动作(动作会在到达开始时间后的)
        /// </summary>
        [ConfigurationProperty("ActionName")]
        public string ActionName
        
            get
            
                return (string)this["ActionName"];
            
            set
            
                this["ActionName"] = value;
            
        
        /// <summary>
        /// 计时周期内执行的动作传入数据(动作会在到达开始时间后的)
        /// </summary>
        [ConfigurationProperty("ActionData")]
        public string ActionData
        
            get
            
                return (string)this["ActionData"];
            
            set
            
                this["ActionData"] = value;
            
        
        /// <summary>
        /// 动作执行时间间隔(秒)
        /// </summary>
        [ConfigurationProperty("ActionSeconds")]
        public int ActionSeconds
        
            get
            
                return (int)this["ActionSeconds"];
            
            set
            
                this["ActionSeconds"] = value;
            
        
    

 

总结:以上就是主要的代码了,中间也遇到过一些问题,上面基本上都写了,以后再补充优化吧。

以上是关于配置文件_自定义section标签获取数据的主要内容,如果未能解决你的问题,请参考以下文章

Python常用模块:解析.ini配置文件configparser

Python常用模块:解析.ini配置文件configparser

Python常用模块configparser解析.ini配置文件

如何修改文件config.php或者加载自定义的配置文件

如何配置HANA参数

springboot系列配置文件详解