.NET中的自定义配置

时间:2009-04-08 14:00:38

标签: .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> 

如果有人可以为此提供一些代码,我会很感激。

谢谢!

7 个答案:

答案 0 :(得分: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; }
    }

    ...
}

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

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

答案 1 :(得分:7)

我最近遇到的一个漂亮的工具是CodePlex的Configuration Section Designer;很好地融入了VS.

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

答案 2 :(得分:6)

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

菲尔·哈克(Phil Haack)有一篇非常好的博客文章:Custom Configuration Sections in 3 Easy Steps.

编辑:

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

这里是Unraveling the Mysteries of .NET 2.0 Configuration

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

答案 3 :(得分:1)

答案 4 :(得分:0)

查看示例的内容(定位到不同的登台环境),而不是动态地阅读配置文件,您可能需要查看web deployment projects,如answer to an earlier question所示。

他们在部署时处理配置合并:一个好主意,特别是如果您有敏感信息,如带有服务帐户密码的连接字符串......

答案 5 :(得分:0)

我会使用App.Config文件

System.Configuration.ConfigurationSettings.AppSettings [ “DatabasePath”];

http://www.eggheadcafe.com/community/aspnet/2/10004734/appconfig-file-c.aspx

答案 6 :(得分:0)

以下是我在阅读本文后最近实施的内容:

使用Reflection将类绑定到.ini文件

http://dvuyka.spaces.live.com/blog/cns!305B02907E9BE19A!174.entry