Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 36608|Jawab: 1

[Inti .NET] ASP.NET Inti (iii) Membuat instans secara dinamis menggunakan ActivatorUtilities

[Salin tautan]
Diposting pada 01/12/2020 13.50.31 | | | |
Resensi:

ASP.NET Core (1) menggunakan caching Redis
https://www.itsvse.com/thread-9393-1-1.html

ASP.NET Inti (2) Mulai ulang aplikasi dengan kode
https://www.itsvse.com/thread-9480-1-1.html

Biasanya objek yang diinstansiasi adalah instansiasi kelas dengan kata kunci baru

C# secara dinamis membuat instans kelas di class factory menggunakan metode berikut:


Activator.CreateInstance (Jenis)
Activator.CreateInstance (Jenis, Objek[])


Pertama, kami mendefinisikan antarmuka ITest sebagai berikut:

Tentukan dua kelas implementasi, yaitu: TestA dan TestB, dan kodenya adalah sebagai berikut:

di mana TestB memiliki konstruktor non-kosong

Metode GetUserName di kelas TestB perlu membaca file konfigurasi melalui IConfiguration, lalu menyatukannya dengan parameter masuk untuk mengembalikan nilai yang dikembalikan.

File konfigurasi adalah sebagai berikut:



Kami membuat objek dengan memuat dll secara dinamis, membuatnya dengan refleksi, dan membuat instance masing-masing melalui Activator dan ActivatorUtilities, dengan kode berikut:

Mengembalikan hasil:

ret
"Halo itsvse.com"
mis. Pesan
"Tidak ada konstruktor tanpa parameter yang ditentukan untuk jenis 'ClassLibrary1.TestB'."

ret
"Halo itsvse.com"
ret
"aaaa itsvse.com"

Saat menggunakan Activator untuk membuat objek TestB, kesalahan dilaporkan:Tidak ada konstruktor tanpa parameter yang ditentukan untuk jenis 'ClassLibrary1.TestB'.

Membuat TestA dan TestB melalui ActivatorUtilities tidak akan melaporkan kesalahan, dan metode ini dapat dijalankan secara normal, seperti yang ditunjukkan di bawah ini:




Tidak ada masalah dalam menggunakan Activator untuk membuat instance objek dalam kerangka kerja .NET, tetapi dalam inti asp.net, konsep IOC dan DI diperkenalkan, dan banyak objek bukan konstruktor tanpa parameter dan perlu diteruskan di kelas implementasi yang sesuai.

Di mana variabel statis _services didefinisikan sebagai berikut:

CreateInstance(IServiceProvider, Jenis, Objek[])
Parameter

Penyedia
Penyedia Layanan Layanan
Penyedia layanan untuk menyelesaikan dependensi

instanceType
Tipe
Jenis yang akan diaktifkan

Parameter
Objek[]
Parameter konstruktor yang tidak disediakan oleh penyedia


Referensi:Login hyperlink terlihat.

(Akhir)




Mantan:Analisis keamanan OAuth 2.0 seluler dan desktop dan mekanisme CodeVerifier
Depan:Gunakan JSC untuk membuat dll di JavaScript untuk panggilan C#
Diposting pada 22/09/2021 20.31.33 |
Belajar untuk belajar...
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com