執行階段動態修改預設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中文網其他相關文章!