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
Lepaskan: 2025-01-19 09:02:08
asal
568 orang telah melayarinya

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:

Assembly assembly = Assembly.LoadFrom("MyNice.dll");

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

object instanceOfMyType = Activator.CreateInstance(type);
Salin selepas log masuk

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