一次加载网站设置的最佳方式?

时间:2010-08-20 12:37:22

标签: c# singleton

我仍然需要帮助。我有网站设置,我想使用单例模式加载。使用这种模式有很多不利因素,并且每个建议都使用Inversion of Control或Dependency Injection。我还没有使用过IoC或DI。

一次加载网站设置并在整个网络应用程序中使用它的最佳方法是什么?我认为单身模式是理想的,但我想采用最佳实践。此外,是否有人使用IoC或DI加载网站设置有任何示例代码?有人甚至提到我注入了单一的Instance方法,但有什么用,因为它仍然是单例?此外,如果任何人有一些单元测试用IoC或DI来评估这个网站设置的加载,那么我们将不胜感激。

我正在使用C#。

由于 布伦丹

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

有几个选项,你可以使用一个简单的静态类:

public class ConfigurationBase
{
    public static string Something
    {
        get { return ConfigurationManager.AppSettings["Something"]; }
    }

    // ....
}

或尝试Castle Dictionary Adapter:

http://codebetter.com/blogs/benhall/archive/2010/07/22/improving-testability-with-the-castle-dictionary-adapter.aspx

根据您的需要而定。没有必要过度工程。首先要保持简单易读。

答案 2 :(得分:1)

在这种情况下,如果有一个实例是有意义的话,Singleton就可以了。通常它不会,你可以使用静态。

单身人士和静力学的许多缺点如果不可改变就不存在(那些与全球状态副作用相关的缺点)。

重要的是,从概念上讲,每次使用它们时都会查看应用程序设置。通过单例或静态执行此操作只会增加性能。如果使用不变性来使之后无法改变,那么每次查看设置之间的唯一差异就是性能提升。

因此,从概念上讲,您并未引入全局状态,您只是在改善已存在的全局状态的性能。因此,你没有让事情变得更糟。

即使是一些坚持反对全局对象(无论是单例还是静态)的人都是一种例外。全局日志记录是单向的,因为其他类只写入它,从不读取。全局设置是单向的,因为其他类只读取它们,从不写。

相关问题