处理应用设置值的最佳实践

本文关键字:最佳 应用 设置 处理 | 更新日期: 2023-09-27 17:54:41

我正在努力编写更好的代码,因为这个原因看看我过去写的一些代码,我看到我访问。config appsetting的东西为

 Public void Do()
{
 Var x = ConfigurationManager.AppSettings.Get("foo");
 doSomethingElse(x);
}

写这个方法的测试我问自己是不是有一个暴露所有.config AppSettings值的属性接口更好?这将允许我通过IoC替换真正的实现。

另一方面,我问在类/接口中包装所有这些值是否正确?如果我有不同的程序集组成一个应用程序,我需要访问该对象?假设它将在共享项目中,是否有意义的值为
 Int ModelAvalue {get{};}
在永远不会在ModelB中使用的类中定义的

?

处理应用设置值的最佳实践

配置是一个依赖项。我认为你关于创建一个返回最合适类型的接口的想法既有助于测试,又使你的代码更容易理解。它还使您能够灵活地更改将来存储配置的位置。

回答你的另一个问题,根据接口隔离原则,接口越小越具体越好。您可以有不同的接口,其中每个接口都是一组密切相关的设置。例如,您不会有一个包含数据库连接字符串和日志文件路径的接口。

public interface IDatabaseConfiguration
{
    string ConnectionString { get; }
}
public interface IBlogConfiguration
{
    int NumberOfPostsPerPage { get; }
}
public class AppConfiguration : IDatabaseConfiguration, IBlogConfiguration
{
    public string ConnectionString 
    {
        get { return ConfigurationManager.ConnectionStrings["MyDb"].ConnectionString; }
    }
    public int NumberOfPostsPerPage 
    {
        get { return int.Parse(ConfigurationManager.AppSettings["PostsPerPage"]); }
    }
}

将来,如果您决定将NumberOfPostsPerPage存储在其他地方,您可以创建IBlogConfiguration的不同具体实现

相关文章: