配置中的运行时指令

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 语句中检查内存配置缓存不会导致性能问题。

以上是关于配置中的运行时指令的主要内容,如果未能解决你的问题,请参考以下文章

Java作业

JVM5-运行时数据

在运行时在 AngularJS 中以编程方式设置 HTML 元素的宽度

单片机中指令CLR是啥意思

JVM运行时数据区--java虚拟机栈

CPU运行时优化(高速缓存指令重排内存屏障等)