我看到有关.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>
如果有人可以为此提供一些代码,我会很感激。
谢谢!
答案 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