Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 36608|Yanıt: 1

[.NET Core] ASP.NET Core (iii) ActivatorUtilities kullanarak dinamik örnekler oluşturun

[Bağlantıyı kopyala]
Yayınlandı 1.12.2020 13:50:31 | | | |
Eleştiri:

ASP.NET Core (1) Redis önbellekleme kullanır
https://www.itsvse.com/thread-9393-1-1.html

ASP.NET Çekirdek (2) Uygulamayı kodla yeniden başlat
https://www.itsvse.com/thread-9480-1-1.html

Genellikle örneklenmiş nesne, yeni anahtar kelimeyle bir sınıfın örneğidir

C#, aşağıdaki yöntemlerle sınıf fabrikasında bir sınıfın örneğini dinamik olarak oluşturur:


Activator.CreateInstance (type)
Activator.CreateInstance (Type, Object[])


İlk olarak, bir ITest arayüzünü şu şekilde tanımlıyoruz:

İki uygulama sınıfı tanımlayın: TestA ve TestB, kod şu şekildedir:

burada TestB'nin boş olmayan bir yapıcısı vardır

TestB sınıfındaki GetUserName metodu, yapılandırma dosyasını IConfiguration üzerinden okumalı ve ardından gelen parametrelerle birleştirerek geri dönüş değerini döndürmelidir.

Yapılandırma dosyası şöyledir:



Nesneleri dll'yi dinamik olarak yükleyerek, yansıtma yoluyla oluşturarak ve sırasıyla Activator ve ActivatorUtilities aracılığıyla örneklerle oluşturuyoruz; aşağıdaki kodla:

Dönüş sonuçları:

retle
"Merhaba itsvse.com"
Eşcinsi. İleti
"Type' 'ClassLibrary1.TestB' için parametresiz bir üretici tanımlanmadı."

retle
"Merhaba itsvse.com"
retle
"Aaaa itsvse.com"

Activator kullanılarak bir TestB nesnesi oluşturulduğunda bir hata bildirilir:'ClassLibrary1.TestB' tipi için parametresiz bir üretici tanımlanmadı.

ActivatorUtilities aracılığıyla TestA ve TestB oluşturulduğunda hata raporlanmaz ve yöntem aşağıda gösterildiği gibi normal şekilde çalıştırılabilir:




.NET çerçevesinde nesneleri örneklemek için Activator kullanmakta bir sorun yoktur, ancak asp.net çekirdekte IOC ve DI kavramları tanıtılır ve birçok nesne parametresiz yapıcı değildir ve ilgili uygulama sınıfında aktarılması gerekir.

Burada _services statik değişken aşağıdaki şekilde tanımlanır:

CreateInstance(IServiceProvider, Type, Object[])
parametre

sağlayıcı
IServiceProvider
Bağımlılıkları çözmek için hizmet sağlayıcısı

instanceType
Tip
Aktive edilecek tip

parametreler
Nesne[]
Sağlayıcı tarafından sağlanmayan üretici parametreleri


Referans:Bağlantı girişi görünür.

(Son)




Önceki:Mobil ve masaüstü OAuth 2.0 güvenlik analizi ve CodeVerifier mekanizması
Önümüzdeki:JSC kullanarak C# çağrıları için JavaScript'te bir dll oluşturun
Yayınlandı 22.09.2021 20:31:33 |
Öğrenmeyi öğren...
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com