2011-09-21 36 views
4

我正在考虑创建一个静态类来处理我的所有Web.config appSettings访问。例如,它应该是这样的:静态ConfigurationManager访问类操作

public static class ConfigManager 
{ 
    public static string Timeout = ConfigurationManager.AppSettings["Timeout"]; 

    public static string Version = ConfigurationManager.AppSettings["Version"]; 
} 

我相信,这会给我一个中央位置来改变键在应用程序设置,如果我想改变一个在未来会给我的IntelliSense所有配置设置在我的应用程序。

我的问题是,这将如何运作,因为我不知道静态如何在引擎盖下工作。我的希望是,当我第一次访问其中一个属性时,所有的属性都会从配置中读取并放入内存中,随后所有后续的命中将会转到内存而不是查看配置。不幸的是,这意味着对配置的运行时更改不会生效。我还认为可能只有我看到的属性会被加载,或者每次访问任何属性时都会加载它们。

有谁知道如何从配置中读取静态属性的组合将表现在引擎盖下?

回答

2

静态意味着在内存中只有该类或变量的一个实例。

由于您选择了静态类,因此在调用静态构造函数时,值将由您的赋值设置一次。这将在课程第一次使用时发生。

任何时候您访问该变量后,它将从内存中拉出该值。

如果您担心能够在运行时更改值,则可以改为使用属性,然后实施缓存策略,以便在给定的时间间隔内刷新该属性。

+0

非常感谢埃文! –