Rumah >pembangunan bahagian belakang >C++ >Bolehkah saya Menghasilkan Kelas .NET Secara Dinamik daripada Hanya DLL dan Nama Kelas?
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
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!