C# .net应用程序配置文件-动态加载/刷新整个文件?

C# .net应用程序配置文件-动态加载/刷新整个文件?,c#,configuration,app-config,C#,Configuration,App Config,我正在一个任务系统上工作,在这个系统中我需要一些进程隔离,为此我正在开发一个子控制台应用程序来执行一些未知的代码。基本上,我想要的子进程/隔离部分通过父应用程序/进程不透明。我试图在子进程中获得与父进程相同的环境设置-最后一个问题是app.config 理想情况下,我希望父进程app.config在子控制台应用程序中可读/可用。为此,我找到了迄今为止最好的两种方法: 这可能是有效的(还没有测试过)-但我有点不舒服,因为这是接触固定的内部 我得到的代码如下: private static voi

我正在一个任务系统上工作,在这个系统中我需要一些进程隔离,为此我正在开发一个子控制台应用程序来执行一些未知的代码。基本上,我想要的子进程/隔离部分通过父应用程序/进程不透明。我试图在子进程中获得与父进程相同的环境设置-最后一个问题是app.config

理想情况下,我希望父进程app.config在子控制台应用程序中可读/可用。为此,我找到了迄今为止最好的两种方法:

这可能是有效的(还没有测试过)-但我有点不舒服,因为这是接触固定的内部

我得到的代码如下:

private static void LoadConfig(string configPath)
{
    var targetConfig = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap() { ExeConfigFilename = configPath }, ConfigurationUserLevel.None);

    var sectionList = targetConfig.Sections.Keys.Cast<string>();

    foreach (ConfigurationSectionGroup part in targetConfig.SectionGroups)
    {
        sectionList = sectionList.Concat(part.Sections.Keys.Cast<string>().Select(k => part.Name + "/" + k));  
    }

    targetConfig.SaveAs(ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).FilePath, ConfigurationSaveMode.Full);

    foreach (var x in sectionList)
    {
        ConfigurationManager.RefreshSection(x);
    }
}
private static void LoadConfig(字符串配置路径)
{
var targetConfig=ConfigurationManager.OpenMappedExeConfiguration(新的ExeConfigurationFileMap(){ExeConfigFilename=configPath},ConfigurationUserLevel.None);
var sectionList=targetConfig.Sections.Keys.Cast();
foreach(targetConfig.SectionGroups中的ConfigurationSectionGroup部分)
{
sectionList=sectionList.Concat(part.Sections.Keys.Cast().Select(k=>part.Name+“/”+k));
}
targetConfig.SaveAs(ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).FilePath,ConfigurationSaveMode.Full);
foreach(截面列表中的变量x)
{
ConfigurationManager.RefreshSection(x);
}
}
这也适用于我——因为我可以愉快地重写客户机控制台配置文件。痛苦在于“愚蠢”。RefreshSection()方法——它只刷新完全命名/特定的部分。例如-如果我有一个system.serviceModel条目。RefreshSection(system.serviceModel)不起作用-只是静静地通过!它需要.RefreshSection(system.serviceModel/client)和所有具有完整路径的此类节,因此我必须遍历整个节组树并为所有节构建路径(我仅在上面的代码中针对1个级别进行了此操作),然后分别刷新每个节-这看起来非常乏味

我能采取更好的办法吗?或者我错过了什么/弄糟了什么