我可以为ConfigurationManager类创建自定义方法

时间:2015-11-17 11:49:40

标签: c# web-config

我的网络配置如下:

  <appSettings>
    <add key="One" value="1" xdt:Transform="Insert"/>
  </appSettings>

如果我需要访问值1,我可以编写以下代码:

ConfigurationManager.AppSettings("One");

但如果网络配置如此,

  <countryAppSettings>
    <add key="Two" value="2" xdt:Transform="Insert"/>
  </countryAppSettings>

我可以使用ConfigurationManager

的帮助程序类以下面的形式访问该值
ConfigurationManager.CountryAppSettings("Two");

这可能在c#中吗?

2 个答案:

答案 0 :(得分:0)

是的,您可以这样做,但您还需要在配置文件中包含自定义配置部分。有一篇MSDN文章here描述了如何做到这一点。

因此,您首先需要添加自定义配置部分:

<configuration>
  <configSections>
    <sectionGroup name="countrySettings">
      <section name="countrySetting" type="Custom.CountrySettingSection" allowLocation="true" allowDefinition="Everywhere" />
    </sectionGroup>
  </configSections>
</configuration>

然后,您通常会更像这样定义您的设置,如果您有一个非常丰富的对象,那就太棒了:

<countrySetting customKey="2">
   <richerObject>2</richerObject>
</countrySetting>

然后你需要一个像这样构造的支持对象:

namespace Custom
{
 public class CountrySettingSection : ConfigurationSection
    {
        // Create a "customKey" attribute.
        [ConfigurationProperty("customKey", DefaultValue = "0", IsRequired = false)]
        public int CustomKey
        {
            get
            { 
                return (int)this["customKey"]; 
            }
            set
            { 
                this["customKey"] = value; 
            }
        }
}

答案 1 :(得分:0)

  1. 你无法创造那种方式。也许应该访问此链接 https://msdn.microsoft.com/en-us/library/bb383977.aspx
  2. ConfigurationManager.AppSetting是属性,没有方法。这个 属性类型是NameValueCollection,你可以像这样使用

    ConfigurationManager.AppSettings["One"]ConfigurationManager.AppSettings.GetValues("One")

  3. 您可以自定义您的web.config https://msdn.microsoft.com/en-us/library/2tw134k3.aspx