Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menghidupkan Kelas Secara Dinamik daripada Nama Himpunan dan Jenisnya?

Bagaimanakah Saya Boleh Menghidupkan Kelas Secara Dinamik daripada Nama Himpunan dan Jenisnya?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-19 09:07:13283semak imbas

How Can I Instantiate a Class Dynamically from its Assembly and Type Name?

Buat kejadian kelas secara dinamik pada masa jalan

Hanya mengetahui nama DLL dan nama kelas membolehkan anda mencipta contoh objek pada masa jalan tanpa menambah rujukan pemasangan dalam projek. Ciri ini amat sesuai untuk senario seperti sistem pemalam atau suntikan kebergantungan.

Gunakan Assembly.LoadFrom()

Untuk memuatkan perhimpunan ke dalam ingatan, gunakan kaedah Assembly.LoadFrom() dan sediakan laluan ke fail DLL:

<code class="language-csharp">Assembly assembly = Assembly.LoadFrom("library.dll");</code>

Cari objek Jenis

Selepas memuatkan pemasangan, gunakan refleksi untuk mencari jenis tertentu:

<code class="language-csharp">Type type = assembly.GetType("Company.Project.Classname");</code>

Buat tika

Akhir sekali, gunakan Activator.CreateInstance() untuk mencipta contoh objek jenis:

<code class="language-csharp">object instanceOfMyType = Activator.CreateInstance(type);</code>

Mengendalikan lokasi DLL yang tidak diketahui

Jika anda tidak mempunyai laluan mutlak ke DLL, anda boleh bergantung pada mekanisme resolusi jenis .NET:

<code class="language-csharp">object instanceOfMyType = Activator.CreateInstance("library.dll", "Company.Project.Classname");</code>

Kaedah ini akan mencari pelbagai lokasi secara automatik, termasuk akar aplikasi, sistem32 dan GAC, untuk mencari pemasangan dan menyelesaikan jenis.

Penyesuaian Terperinci

Jika perlu, anda boleh meningkatkan penyelesaian ini dengan melaksanakan mekanisme carian DLL tersuai untuk mencari DLL dalam direktori tertentu. Ini akan memberikan fleksibiliti yang lebih besar dalam senario di mana anda menyimpan perhimpunan lain yang tidak dicari oleh mekanisme resolusi jenis lalai.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghidupkan Kelas Secara Dinamik daripada Nama Himpunan dan Jenisnya?. 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