Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 36608|Odpověď: 1

[.NET Core] ASP.NET Jádro (iii) Dynamicky vytvářet instance pomocí ActivatorUtilities

[Kopírovat odkaz]
Zveřejněno 01.12.2020 13:50:31 | | | |
Přezkoumání:

ASP.NET Core (1) používá Redis caching
https://www.itsvse.com/thread-9393-1-1.html

ASP.NET Jádro (2) Restartovat aplikaci pomocí kódu
https://www.itsvse.com/thread-9480-1-1.html

Typicky je instancovaný objekt instancí třídy s novým klíčovým slovem

C# dynamicky vytváří instanci třídy v továrně tříd pomocí následujících metod:


Activator.CreateInstance (typ)
Activator.CreateInstance (typ, objekt[])


Nejprve definujeme rozhraní ITest následovně:

Definujte dvě implementační třídy, konkrétně: TestA a TestB, a kód je následující:

kde TestB má neprázdný konstruktor

Metoda GetUserName ve třídě TestB musí přečíst konfigurační soubor přes IConfiguration a poté jej spojit s příchozími parametry, aby vrátila vrácenou hodnotu.

Konfigurační soubor je následující:



Objekty vytváříme dynamickým načítáním dll, jejich tvorbou reflexí a instancováním prostřednictvím Activator a ActivatorUtilities, s následujícím kódem:

Výsledky návratu:

Ret
"Ahoj itsvse.com"
bývalý. Zpráva
"Žádný konstruktor bez parametrů není definován pro typ 'ClassLibrary1.TestB'."

Ret
"Ahoj itsvse.com"
Ret
"Aaaa itsvse.com"

Při použití Activatoru k vytvoření objektu TestB je hlášena chyba:Žádný konstruktor bez parametrů definovaný pro typ 'ClassLibrary1.TestB'.

Vytvoření TestA a TestB pomocí ActivatorUtilities nehlásí chybu a metoda může být vykonána normálně, jak je uvedeno níže:




Není problém použít Activator k instancování objektů v .NET frameworku, ale v jádru asp.net jsou zavedeny koncepty IOC a DI a mnoho objektů není konstruktorů bez parametrů a je třeba je předat do příslušné implementační třídy.

Kde _services statické proměnné jsou definovány následovně:

CreateInstance(IServiceProvider, Type, Object[])
parametr

poskytovatel
IServiceProvider
Poskytovatel služeb pro řešení závislostí

instanceType
Typ
Typ aktivace

Parametry
Cíl[]
Parametry konstruktoru, které nejsou poskytovány poskytovatelem


Odkaz:Přihlášení k hypertextovému odkazu je viditelné.

(Konec)




Předchozí:Mobilní a desktopová bezpečnostní analýza OAuth 2.0 a mechanismus CodeVerifier
Další:Použijte JSC k vytvoření dll v JavaScriptu pro volání v C#
Zveřejněno 22.09.2021 20:31:33 |
Uč se učit...
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com