如何在app.config中创建自定义配置部分?

我想在app.config文件中添加一个自定义配置部分。有没有办法做到这一点,以及如何在程序中访问这些设置。以下是我要添加到我的配置部分app.config:


<RegisterCompanies>

    <Companies>

      <Company name="Tata Motors" code="Tata"/>

      <Company name="Honda Motors" code="Honda"/>

    </Companies>

</RegisterCompanies>


Cats萌萌
浏览 552回答 3
3回答

哔哔one

导入名称空间:using System.Configuration;创建ConfigurationElement公司:public class Company : ConfigurationElement{&nbsp; &nbsp; &nbsp; &nbsp; [ConfigurationProperty("name", IsRequired = true)]&nbsp; &nbsp; &nbsp; &nbsp; public string Name&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return this["name"] as string;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ConfigurationProperty("code", IsRequired = true)]&nbsp; &nbsp; &nbsp; &nbsp; public string Code&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return this["code"] as string;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }}ConfigurationElementCollection:public class Companies&nbsp; &nbsp; &nbsp; &nbsp; : ConfigurationElementCollection&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; public Company this[int index]&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return base.BaseGet(index) as Company ;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; set&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (base.BaseGet(index) != null)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; base.BaseRemoveAt(index);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.BaseAdd(index, value);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp;public new Company this[string responseString]&nbsp; &nbsp; &nbsp; &nbsp;{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get { return (Company) BaseGet(responseString); }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; set&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(BaseGet(responseString) != null)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BaseRemoveAt(BaseIndexOf(BaseGet(responseString)));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BaseAdd(value);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; protected override System.Configuration.ConfigurationElement CreateNewElement()&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return new Company();&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; protected override object GetElementKey(System.Configuration.ConfigurationElement element)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return ((Company)element).Name;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }和ConfigurationSection:public class RegisterCompaniesConfig&nbsp; &nbsp; &nbsp; &nbsp; : ConfigurationSection&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; public static RegisterCompaniesConfig GetConfig()&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return (RegisterCompaniesConfig)System.Configuration.ConfigurationManager.GetSection("RegisterCompanies") ?? new RegisterCompaniesConfig();&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; [System.Configuration.ConfigurationProperty("Companies")]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [ConfigurationCollection(typeof(Companies), AddItemName = "Company")]&nbsp; &nbsp; &nbsp; &nbsp; public Companies Companies&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; object o = this["Companies"];&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return o as Companies ;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }并且您还必须在web.config(app.config)中注册新的配置部分:<configuration>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; <configSections>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <section name="Companies" type="blablabla.RegisterCompaniesConfig" ..>然后你用var config = RegisterCompaniesConfig.GetConfig();foreach(var item in config.Companies){&nbsp; &nbsp;do something ..}

慕码人8056858

您应该在CodeProject上查看Jon Rista的有关.NET 2.0配置的三部分系列。揭示.NET 2.0配置的奥秘解码.NET 2.0配置的奥秘揭开.NET 2.0配置之谜强烈推荐,写得很好,非常有帮助!它非常清楚地向您展示了如何编写必要的类(来自ConfigurationElement和/或ConfigurationSection),以设计所需的自定义配置部分。

海绵宝宝撒

得注意的是,如果您使用的是MVC应用程序,则列出的部分很好。随着一个控制台应用程序,Web服务,也许还有其他,你需要有“的AssemblyName”‘blablabla.RegisterCompaniesConfig’后&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP