首页 > 后端开发 > C++ > 如何在运行时动态更改 app.config 而不覆盖默认值?

如何在运行时动态更改 app.config 而不覆盖默认值?

Linda Hamilton
发布: 2025-01-25 17:36:10
原创
482 人浏览过

How Can I Dynamically Change the app.config at Runtime Without Overwriting the Default?

运行时动态修改默认App.config

为了动态加载需要配置项的模块,需要一种方法在内存中创建一个新的app.config,整合来自模块的各个节,并让应用程序使用它,而不会覆盖默认的app.config。

针对这个问题,我们找到了一种类似于问题中提出的解决方案。但是,提供的代码并没有产生预期的结果。链接问题中提到的方法只有在配置系统首次使用之前执行才能工作。ClientConfigPaths类中的缓存值阻止了在初始使用后读取新的配置。

因此,本解决方案还删除了这些缓存值。以下代码实现了此任务:

<code class="language-csharp">public abstract class AppConfig : IDisposable
{
    // ...
}

private class ChangeAppConfig : AppConfig
{
    // ...

    private static void ResetConfigMechanism()
    {
        // ...

        typeof(ConfigurationManager)
            .Assembly.GetTypes()
            .Where(x => x.FullName ==
                        "System.Configuration.ClientConfigPaths")
            .First()
            .GetField("s_current", BindingFlags.NonPublic |
                                   BindingFlags.Static)
            .SetValue(null, null);
    }
}</code>
登录后复制

使用此代码,新的app.config将在应用程序运行时读取和使用。可以通过释放AppConfig实例来恢复默认的app.config。如果需要永久更改,则可以在不使用AppConfig.Change方法的情况下执行它,将其放在应用程序的开头。

以上是如何在运行时动态更改 app.config 而不覆盖默认值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板