.NET中的自定义配置

3 .net configuration configuration-files

我看到有关.NET中自定义配置的简单示例.我的情况有点复杂,有嵌套节点.

我希望能够从配置文件中读取这个:

 <environments>

<environment name="live" url="http://www.live.com">
  <server name="a" IP="192.168.1.10"></server>
  <server name="b" IP="192.168.1.20"></server>
  <server name="c" IP="192.168.1.30"></server>      
</environment>

<environment name="dev" url="http://www.dev.com">
  <server name="a" IP="192.168.1.10"></server>
  <server name="c" IP="192.168.1.30"></server>
</environment>

<environment name="test" url="http://www.test.com">
  <server name="b" IP="192.168.1.20"></server>
  <server name="d" IP="192.168.1.40"></server>
</environment></environments> 
Run Code Online (Sandbox Code Playgroud)

如果有人能提供一些代码,我会很感激.

谢谢!

Pet*_*old 9

您可以通过实现从ConfigurationElement类继承的自定义配置类来阅读此内容.

以下是"server"元素的示例:

public class ServerElement: ConfigurationElement
{
    [ConfigurationProperty("name", IsRequired = true, IsKey = true)]
    public string Name
    {
        get { return ((string)base["name"]); }
        set { base["name"] = value; }
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

环境元素实际上是一个集合,可以像这样实现:

public class EnvironmentElement: ConfigurationElementCollection
{
    protected override ConfigurationElement CreateNewElement(string elementName)
    {
        return new ServerElement(...);
    }
}
Run Code Online (Sandbox Code Playgroud)


dev*_*uff 7

我最近遇到的一个漂亮的工具是CodePlex上的Configuration Section Designer ; 很好地集成到VS.

生成类,XML模式等.推荐.


Pop*_*lin 6

您需要创建一些类来处理配置文件的自定义配置部分.

菲尔·哈克(Phil Haack)有一篇非常好的博客文章:3个简单步骤中的自定义配置部分.

编辑:

我试图找到我过去用过的Code Project文章来学习如何实现这一点,我在Phil的博客文章中找到了它:

这里是揭开.NET 2.0配置之谜

它包含处理嵌套元素和集合所必需的信息.