星空网 > 软件开发 > ASP.net

Create a custom configSection in web.config or app.config file

config file:

<??><configuration> <configSections>  <section name="FileDepend" type="TestConsole.FileDepend,TestConsole"/> </configSections> <FileDepend>  <RootDir path="c:\"></RootDir>  <Public>   <element file="/1.txt"></element>   <element file="/2.txt"></element>  </Public>  <Modules>   <module name="legend">    <element file="/3.txt"></element>    <element file="/4.txt"></element>   </module>   <module name="bookmark">    <element file="/5.txt"></element>    <element file="/6.txt"></element>   </module>  </Modules> </FileDepend> <startup>  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" /> </startup></configuration>

FileDepend.cs

using System;using System.Collections.Generic;using System.Configuration;using System.Linq;namespace TestConsole{  public class FileDepend : ConfigurationSection  {    [ConfigurationProperty("RootDir")]    private RootDirElement _RootDir => (RootDirElement)base["RootDir"];    [ConfigurationProperty("Public")]    private FilesCollection PublicFilesCollection => ((FilesCollection)(base["Public"]));    public string RootDir => _RootDir.Name;    [ConfigurationProperty("Modules")]    public ModulesCollection ModulesCollection => ((ModulesCollection)(base["Modules"]));    public IEnumerable<string> PublicFiles => from FileElement v in PublicFilesCollection select v.Name;  }  public class RootDirElement : ConfigurationElement  {    [ConfigurationProperty("path", DefaultValue = "", IsKey = true, IsRequired = true)]    public string Name => (string)base["path"];  }  public class FileElement : ConfigurationElement  {    [ConfigurationProperty("file", DefaultValue = "", IsKey = true, IsRequired = true)]    public string Name => (string)base["file"];  }  public class ModuleElement : ConfigurationElement  {    [ConfigurationProperty("name", DefaultValue = "", IsKey = true, IsRequired = true)]    public string Name    {      get { return (string)base["name"]; }      set { base["name"] = value; }    }    [ConfigurationProperty("", IsDefaultCollection = true)]    private FilesCollection Element => (FilesCollection)base[""];    public IEnumerable<string> Files => from FileElement file in Element select file.Name;  }  [ConfigurationCollection(typeof(ModuleElement))]  public class FilesCollection : ConfigurationElementCollection  {    internal const string PropertyName = "element";    public override ConfigurationElementCollectionType CollectionType => ConfigurationElementCollectionType.BasicMapAlternate;    protected override string ElementName => PropertyName;    protected override bool IsElementName(string elementName)    {      return elementName.Equals(PropertyName, StringComparison.InvariantCultureIgnoreCase);    }    public override bool IsReadOnly()    {      return false;    }    protected override ConfigurationElement CreateNewElement()    {      return new FileElement();    }    protected override object GetElementKey(ConfigurationElement element)    {      return ((FileElement)(element)).Name;    }    public FileElement this[int idx] => (FileElement)BaseGet(idx);    public new FileElement this[string idx] => (FileElement)BaseGet(idx);  }  [ConfigurationCollection(typeof(ModuleElement))]  public class ModulesCollection : ConfigurationElementCollection  {    internal const string PropertyName = "module";    public override ConfigurationElementCollectionType CollectionType => ConfigurationElementCollectionType.BasicMapAlternate;    protected override string ElementName => PropertyName;    protected override bool IsElementName(string elementName)    {      return elementName.Equals(PropertyName, StringComparison.InvariantCultureIgnoreCase);    }    public override bool IsReadOnly()    {      return false;    }    protected override ConfigurationElement CreateNewElement()    {      return new ModuleElement();    }    protected override object GetElementKey(ConfigurationElement element)    {      return ((ModuleElement)(element)).Name;    }    public ModuleElement this[int idx] => (ModuleElement)BaseGet(idx);    public new ModuleElement this[string idx] => (ModuleElement)BaseGet(idx);  }}

 

run:

static void Main(string[] args)    {      var v = ConfigurationManager.GetSection("FileDepend") as FileDepend;      var rootDir = v.RootDir;      var publicFiles = v.PublicFiles;      var legendFiles = v.ModulesCollection["legend"].Files;      Console.WriteLine(rootDir);      publicFiles.ToList().ForEach(Console.WriteLine);      legendFiles.ToList().ForEach(Console.WriteLine);      Console.ReadLine();    }




原标题:Create a custom configSection in web.config or app.config file

关键词:web

web
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

OZON、Shopee测评如何防止商品被删,掉评,封号等问题? :https://www.goluckyvip.com/news/8904.html
无p图、零滤镜!社媒新星BeReal日活超千万,TikTok、ins争相模仿 :https://www.goluckyvip.com/news/8905.html
Lazada美妆品类500%增长;Lazada代运营分享 :https://www.goluckyvip.com/news/8906.html
中通新开东南亚5国集运线!极兔升级美西海运航线:https://www.goluckyvip.com/news/8907.html
5秒视频超三千万播放!TikTok“玄学”带货的兴起:https://www.goluckyvip.com/news/8908.html
TikTok带火国内培训班,20小时970美元的学费你交吗:https://www.goluckyvip.com/news/8909.html
十月北方旅游最佳去处?:https://www.vstour.cn/a/365184.html
缅甸电子签证口岸 缅甸电子签证在线申请:https://www.vstour.cn/a/365185.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流