配置中的运行时指令
Posted
技术标签:
【中文标题】配置中的运行时指令【英文标题】:runtime directives in config 【发布时间】:2010-11-26 17:16:11 【问题描述】:嗯, 假设我有以下 if 语句:
if (a)
// do something.
是否可以仅当 app.config 中的某个值为 true 时才运行该语句,而无需在包装时生成另一个值?
这就像制作一个预处理器#if 指令,只是不是用于预处理,而是用于运行时。
有这种事吗? JIT 指令或类似的东西?
【问题讨论】:
【参考方案1】:if (ConfigurationManager.AppSettings["condition"] == "true" && a)
// do something.
【讨论】:
【参考方案2】:为了清洁和个人喜好,我总是将配置检查抽象为只读属性:
private bool A
get
return ConfigurationManager.AppSettings["condition"] == "true" && a;
那么你的陈述变成:
if (A)
//do something.
A 是一个可怕的名字,但你明白了。
ConfigurationManager 是获取配置设置的推荐 API,配置设置是更改运行时行为的推荐方法。
【讨论】:
我错过了一个重要的细节——这段代码是每秒触发 10 次的方法的一部分。我不希望每次触发该方法时都实际运行 if 语句。有没有另一种方法可以根据配置设置值运行一段代码,而不必每次都检查它? 每次都检查有什么问题?引用 MSDN:“对于某些部分,例如 appSettings 和 connectionStrings,使用 AppSettings 和 ConnectionStrings 类。这些成员执行只读操作,使用配置的单个缓存实例,并且支持多线程。”如果您想避免这种情况,它实际上并不是每次都从文件中读取。在 if 语句中检查内存配置缓存不会导致性能问题。以上是关于配置中的运行时指令的主要内容,如果未能解决你的问题,请参考以下文章