Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menyesuaikan Tetapan App.config Secara Dinamik semasa Runtime dalam Seni Bina Modular?

Bagaimanakah Saya Boleh Menyesuaikan Tetapan App.config Secara Dinamik semasa Runtime dalam Seni Bina Modular?

Barbara Streisand
Lepaskan: 2025-01-25 17:41:10
asal
331 orang telah melayarinya

How Can I Dynamically Customize App.config Settings at Runtime in a Modular Architecture?

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>
Salin selepas log masuk

<:> nota: Untuk menukar keseluruhan app.config semasa keseluruhan runtime, cuma hubungi

pada permulaan permohonan, dan tidak diperlukan
<code class="language-csharp">// 使用默认的 app.config
using (AppConfig.Change(tempFileName))
{
    // 使用指定路径下的 app.config
}
// 再次使用默认的 app.config</code>
Salin selepas log masuk
blok.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan