Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Memuatkan dan Menggunakan Kaedah Secara Dinamik daripada DLL dalam C# Beyond Assembly.LoadFile()?

Bagaimanakah Saya Boleh Memuatkan dan Menggunakan Kaedah Secara Dinamik daripada DLL dalam C# Beyond Assembly.LoadFile()?

Susan Sarandon
Susan Sarandonasal
2025-01-14 09:35:43262semak imbas

How Can I Dynamically Load and Use Methods from a DLL in C# Beyond Assembly.LoadFile()?

Pemuatan DLL dinamik dalam C#

Dalam C#, pembangun selalunya perlu memuatkan perpustakaan pautan dinamik (DLL) secara dinamik, terutamanya apabila menggunakan pustaka pihak ketiga atau konfigurasi masa jalan. Artikel ini bertujuan untuk menangani soalan lazim tentang had penggunaan kaedah Assembly.LoadFile() dan menyediakan penyelesaian berasaskan objek pantulan dan dinamik.

Had Perhimpunan.LoadFile()

Seperti yang dinyatakan dalam soalan, menggunakan Assembly.LoadFile() berjaya memuatkan DLL dan membenarkan maklumat seperti nama kelas diambil semula. Walau bagaimanapun, ia mungkin tidak boleh memanggil kaedah secara langsung dalam DLL yang dimuatkan.

Refleksi sebagai penyelesaian

Untuk mengatasi pengehadan ini, pembangun boleh menggunakan refleksi, yang membolehkan penyeruan dinamik kaedah dan objek operasi pada masa jalan. Untuk melakukan ini:

  1. Dapatkan objek Jenis kelas: var type = DLL.GetExportedTypes().FirstOrDefault();

  2. Buat tika kelas: var c = Activator.CreateInstance(type);

  3. Gunakan kaedah InvokeMember() untuk memanggil kaedah sasaran:

    <code class="language-csharp"> type.InvokeMember("Output", BindingFlags.InvokeMethod, null, c, new object[] { "Hello" });</code>

Objek Dinamik dalam .NET 4.0

Untuk aplikasi yang menyasarkan .NET 4.0 atau lebih tinggi, kata kunci dinamik boleh memudahkan lagi proses ini. Menggunakan pendekatan ini anda boleh mengakses ahli secara langsung tanpa refleksi jenis:

<code class="language-csharp">dynamic c = Activator.CreateInstance(type);
c.Output("Hello");</code>

Kesimpulan

Untuk meringkaskan, manakala Assembly.LoadFile() membenarkan memuatkan DLL, pantulan atau objek dinamik diperlukan untuk memanggil kaedah dalam modul yang dimuatkan. Bergantung pada keperluan aplikasi, kedua-dua kaedah menyediakan penyelesaian yang berdaya maju untuk memuatkan secara dinamik dan menggunakan DLL pada masa jalan dalam C#.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memuatkan dan Menggunakan Kaedah Secara Dinamik daripada DLL dalam C# Beyond Assembly.LoadFile()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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