Tetapan app.config disesuaikan dinamik
<:> Soalan:
Dalam seni bina modular, adalah menyusahkan untuk mengkonfigurasi item konfigurasi yang mengandungi modul dinamik dalam app.config utama. Matlamatnya adalah untuk membuat app.config dalam ingatan berasingan, yang bergabung dari bahagian konfigurasi aplikasi dan modul utama.
Penyelesaian:
Untuk mencapai matlamat ini, kita boleh menggunakan kelas tersuai , yang sementara mengubah laluan app.config dan menetapkan semula mekanisme konfigurasi. Berikut adalah prinsip kerja:
Penggunaan: AppConfig
<code class="language-csharp">public abstract class AppConfig : IDisposable { public static AppConfig Change(string path) { return new ChangeAppConfig(path); } public abstract void Dispose(); private class ChangeAppConfig : AppConfig { private readonly string oldConfig; public ChangeAppConfig(string path) { oldConfig = AppDomain.CurrentDomain.GetData("APP_CONFIG_FILE").ToString(); AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", path); ResetConfigMechanism(); } public override void Dispose() { AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", oldConfig); ResetConfigMechanism(); } private static void ResetConfigMechanism() { typeof(ConfigurationManager) .GetField("s_initState", BindingFlags.NonPublic | BindingFlags.Static) .SetValue(null, 0); typeof(ConfigurationManager) .GetField("s_configSystem", BindingFlags.NonPublic | BindingFlags.Static) .SetValue(null, null); typeof(ConfigurationManager) .Assembly.GetTypes() .Where(x => x.FullName == "System.Configuration.ClientConfigPaths") .First() .GetField("s_current", BindingFlags.NonPublic | BindingFlags.Static) .SetValue(null, null); } } }</code>
<:> nota:
<code class="language-csharp">// 使用默认的 app.config using (AppConfig.Change(tempFileName)) { // 使用指定路径下的 app.config } // 再次使用默认的 app.config</code>
Output Revied ini mengekalkan imej asal dan formatnya semasa mengolah semula teks untuk kejelasan dan aliran yang lebih baik
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyesuaikan Tetapan App.config Secara Dinamik semasa Runtime dalam Seni Bina Modular?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!