C# pemuatan dinamik DLL
Memuatkan dan menggunakan DLL pada masa jalan ialah senario biasa dalam aplikasi C#. Ini membolehkan pembangun memuatkan kod luaran dan melanjutkan kefungsian program mereka.
Biasanya gunakan Assembly.LoadFile()
untuk memuatkan DLL pada masa jalan. Walau bagaimanapun, hanya memuatkan DLL tidak memberikan akses segera kepada kaedahnya. Di sinilah konsep pantulan dan objek dinamik dimainkan.
Refleksi
Refleksi melibatkan pemeriksaan dan memanipulasi jenis pada masa jalan. Ia dapat mengakses ahli dan kaedah panggilan yang tidak diketahui pada masa penyusunan. Dalam contoh yang disediakan, anda boleh menggunakan refleksi untuk memanggil kaedah "Output" daripada DLL yang dimuatkan:
<code class="language-csharp">foreach (Type type in DLL.GetExportedTypes()) { var c = Activator.CreateInstance(type); type.InvokeMember("Output", BindingFlags.InvokeMethod, null, c, new object[] {@"Hello"}); }</code>
Dinamik (.NET 4.0 dan ke atas)
Objek dinamik membenarkan lebih fleksibiliti dalam mengakses ahli dan kaedah panggilan secara dinamik. Menggunakan kata kunci dynamic
anda boleh menghantar contoh jenis yang dimuatkan ke dynamic
dan mengakses ahlinya secara terus:
<code class="language-csharp">foreach (Type type in DLL.GetExportedTypes()) { dynamic c = Activator.CreateInstance(type); c.Output(@"Hello"); }</code>
Dalam kedua-dua kes, kod berjaya memanggil kaedah "Output" daripada DLL yang dimuatkan pada masa jalan, membolehkan anda mengakses fungsinya dalam aplikasi C# anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memuatkan dan Menggunakan DLL Secara Dinamik dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!