Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Memuatkan dan Menggunakan DLL Secara Dinamik dalam C#?

Bagaimanakah Saya Boleh Memuatkan dan Menggunakan DLL Secara Dinamik dalam C#?

Mary-Kate Olsen
Lepaskan: 2025-01-14 09:37:44
asal
409 orang telah melayarinya

How Can I Dynamically Load and Use DLLs in C#?

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

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

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!

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