Situasi sering timbul di mana pembangun mesti memuatkan himpunan secara dinamik, mencipta kejadian kelas dan melaksanakan kaedah tertentu. Contoh utama ialah aplikasi konsol yang perlu memuatkan DLL, membuat contoh kelas TestRunner
dan memanggil kaedah Run()
nya.
Kaedah Tradisional
Pendekatan biasa menggunakan Assembly.LoadFile()
untuk memuatkan pemasangan dan refleksi untuk mengakses dan menggunakan kaedah Run()
kelas TestRunner
. Walau bagaimanapun, ini memerlukan menghantar objek yang di instantiated kepada jenis tertentu (cth., IRunnable
). Ini boleh menjadi masalah apabila berurusan dengan pemasangan yang dijana secara dinamik.
Penyelesaian Dipertingkat: Memanfaatkan AppDomains
Penyelesaian yang unggul dan lebih mudah disesuaikan melibatkan AppDomains. Teknik ini mencipta AppDomain yang berasingan untuk pemasangan yang dimuatkan secara dinamik, meningkatkan pengasingan dan keselamatan. Kod yang disemak menggambarkan ini:
<code class="language-csharp">var domain = AppDomain.CreateDomain("NewDomainName"); var t = typeof(TestRunner); var runnable = domain.CreateInstanceFromAndUnwrap("C:\myDll.dll", t.Name) as IRunnable; if (runnable == null) throw new Exception("broke"); runnable.Run();</code>
Kelebihan Menggunakan AppDomains
Kaedah ini menawarkan beberapa faedah utama:
Ringkasan
Menggunakan AppDomains menawarkan pendekatan yang lebih selamat dan fleksibel untuk memuatkan himpunan secara dinamik, mencipta kejadian kelas dan melaksanakan kaedah. Kawalan yang dipertingkatkan ini amat berharga apabila bekerja dengan pelaksanaan kod dinamik.
Atas ialah kandungan terperinci Bagaimanakah AppDomains Boleh Meningkatkan Pemuatan dan Invokasi Perhimpunan Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!