Modifier dynamiquement l'App.config par défaut pendant l'exécution
Afin de charger dynamiquement des modules nécessitant des éléments de configuration, il est nécessaire de créer un nouveau app.config en mémoire, de consolider les différentes sections du module et de laisser l'application l'utiliser sans écraser le app.config par défaut.
Pour ce problème, nous avons trouvé une solution similaire à celle proposée dans la question. Cependant, le code fourni ne produit pas les résultats escomptés. La méthode mentionnée dans la question liée ne fonctionnera que si elle est effectuée avant de configurer le système pour la première utilisation. Les valeurs mises en cache dans la classe ClientConfigPaths empêchent la lecture des nouvelles configurations après la première utilisation.
Par conséquent, cette solution supprime également ces valeurs mises en cache. Le code suivant réalise cette tâche :
<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>
Avec ce code, le nouveau app.config sera lu et utilisé lors de l'exécution de l'application. Le fichier app.config par défaut peut être restauré en libérant l'instance AppConfig. Si une modification permanente est requise, vous pouvez l'effectuer sans utiliser la méthode AppConfig.Change, en la plaçant au début de l'application.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!