我有一个应用程序,我有一些缓存,队列和数据库的配置文件。
public class ServerConfiguration: ConfigurationSection
{
[ ConfigurationProperty( FOO, DefaultValue = "", IsRequired = false ) ]
public string FOO
{
get { return (string)this[FOO]; }
set { this[FOO] = value; }
}
}
这就是我为配置文件所做的事情,我也有一些继承层次结构。
您使用什么来处理配置以及为此目的的哪些最佳实践?
答案 0 :(得分:3)
我喜欢并广泛使用Microsoft配置库,但我尝试确保我的应用程序不依赖于它。这通常涉及让我的配置部分实现一个接口,因此您的示例如下所示:
public class ServerConfiguration : ConfigurationSection, IServerConfiguration
{
[ ConfigurationProperty( FOO, DefaultValue = "", IsRequired = false ) ]
public string FOO
{
get { return (string)this[FOO]; }
set { this[FOO] = value; }
}
}
public interface IServerConfiguration
{
public string FOO { get; } //Unless I am updating the config in code I don't use set on the interface
}
现在您在代码中使用配置时只需要担心IServerConfiguration,并且无需更改用法即可更改实施。有时我只是在开发期间开始使用硬编码类,并且只有在实际需要在不同环境中使用不同值时才将其更改为配置部分。
如果您使用的是配置部分,则还依赖于ConfigurationManager。我通过使用IConfigurationProvider [T]将其隐藏在我的代码中,其中T将是IServerConfiguration,你可以在我的博客上看到配置无知的一个例子。