Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Memuatkan dan Menggerakkan Jenis Secara Dinamik daripada Nama Himpunan dalam .NET?

Bagaimanakah Saya Boleh Memuatkan dan Menggerakkan Jenis Secara Dinamik daripada Nama Himpunan dalam .NET?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-19 09:16:09793semak imbas

How Can I Dynamically Load and Instantiate Types from Assembly Names in .NET?

Muat secara dinamik dan nyatakan jenis pemasangan pada masa jalan

Dalam sesetengah kes, anda mungkin perlu membuat instantiate objek pada masa jalan tanpa dapat mengubah suai rujukan pemasangan projek. Ini berlaku apabila anda hanya mengetahui nama perhimpunan dan nama jenis yang layak sepenuhnya bagi kelas yang diperlukan.

Kaedah:

Untuk mengatasi cabaran ini, anda boleh menggunakan refleksi .NET dan mekanisme pemuatan pemasangan untuk melaksanakan langkah berikut:

  1. Gunakan kaedah Assembly.LoadFrom untuk memuatkan pemasangan ke dalam ingatan. Kaedah ini boleh memuatkan pemasangan walaupun laluan mutlak ke pemasangan tidak diketahui, menjadikannya sesuai untuk pemasangan yang terletak dalam direktori lain atau dimuatkan ke dalam Global Assembly Cache (GAC).
  2. Dapatkan semula metadata jenis daripada pemasangan yang dimuatkan menggunakan kaedah Type.GetType. Langkah ini memerlukan nama jenis yang layak sepenuhnya sebagai parameter.
  3. Panggil Type dengan objek Activator.CreateInstance yang diperoleh untuk menyatakan jenis yang diperlukan.

Berikut ialah contoh kod yang dipermudahkan:

<code class="language-csharp">Assembly assembly = Assembly.LoadFrom("MyCoolAssembly.dll");
Type myType = assembly.GetType("MyNamespace.MyType");
object myInstance = Activator.CreateInstance(myType);</code>

Alternatif kepada peleraian jenis dinamik:

Jika anda mempunyai kedua-dua nama fail pemasangan dan nama jenis, anda boleh menggunakan kaedah Activator.CreateInstance(assemblyName, typeName). Kaedah ini membolehkan .NET menyelesaikan jenis secara automatik tanpa refleksi manual. Jika timbul sebarang isu penghuraian, anda boleh memasukkan blok try/catch untuk mencari direktori pemasangan tertentu atau cuba memuatkannya secara manual menggunakan kaedah Assembly.LoadFrom yang dinyatakan sebelum ini.

Dengan menggunakan teknik ini, anda mempunyai fleksibiliti untuk memuatkan dan membuat instantiat jenis secara dinamik semasa masa jalan, walaupun anda tidak mempunyai akses kepada lokasi fizikal pemasangan atau tidak merujuknya secara langsung dalam projek anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memuatkan dan Menggerakkan Jenis Secara Dinamik daripada Nama Himpunan dalam .NET?. 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