Rumah >pembangunan bahagian belakang >C++ >Bolehkah saya Menghasilkan Kelas .NET Secara Dinamik daripada Hanya DLL dan Nama Kelas?

Bolehkah saya Menghasilkan Kelas .NET Secara Dinamik daripada Hanya DLL dan Nama Kelas?

Barbara Streisand
Barbara Streisandasal
2025-01-19 09:02:08502semak imbas

Can I Dynamically Instantiate a .NET Class from Just a DLL and Class Name?

Pemuatan dinamik dan instantiasi himpunan .NET

Hanya mempunyai DLL dan nama kelas, adakah mungkin untuk mencipta objek secara dinamik tanpa merujuk perhimpunan dalam projek secara eksplisit? Kelas ini mematuhi spesifikasi antara muka, membolehkan anda menghantarnya ke antara muka selepas instantiasi.

Perhimpunan dan taip maklumat

  • Nama perhimpunan: library.dll
  • Nama jenis: Syarikat.Projek.Nama Kelas

Penyelesaian

Ya. Menggunakan Assembly.LoadFrom anda boleh memuatkan pemasangan ke dalam memori. Anda kemudiannya boleh menggunakan Activator.CreateInstance untuk membuat contoh jenis yang diingini. Menggunakan refleksi anda perlu mencari jenisnya dahulu:

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

Type type = assembly.GetType("MyType");

object instanceOfMyType = Activator.CreateInstance(type);</code>

Pelan penambahbaikan

Setelah anda mempunyai nama fail pemasangan dan nama jenis, anda boleh menggunakan Activator.CreateInstance(assemblyName, typeName) untuk mengarahkan mekanisme resolusi jenis .NET untuk menentukan jenis. Untuk mengendalikan kes di mana percubaan ini gagal, anda boleh membungkusnya dalam blok cuba/tangkap dan kemudian cari direktori tempat pemasangan tambahan mungkin disimpan. Pada ketika ini, anda akan menggunakan kaedah yang dinyatakan sebelum ini.

Atas ialah kandungan terperinci Bolehkah saya Menghasilkan Kelas .NET Secara Dinamik daripada Hanya DLL dan Nama Kelas?. 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