Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 36608|Odpoveď: 1

[.NET Core] ASP.NET Jadro (iii) Dynamicky vytvárať inštancie pomocou ActivatorUtilities

[Kopírovať odkaz]
Zverejnené 1. 12. 2020 13:50:31 | | | |
Revízia:

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

ASP.NET Core (2) Reštartovať aplikáciu pomocou kódu
https://www.itsvse.com/thread-9480-1-1.html

Typicky je inštanciovaný objekt inštanciáciou triedy s novým kľúčovým slovom

C# dynamicky vytvára inštanciu triedy v class factory pomocou nasledujúcich metód:


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


Najprv definujeme rozhranie ITest nasledovne:

Definujte dve implementačné triedy, konkrétne: TestA a TestB, a kód je nasledovný:

kde TestB má neprázdny konštruktor

Metóda GetUserName v triede TestB musí prečítať konfiguračný súbor cez IConfiguration a potom ho spojiť s prichádzajúcimi parametrami, aby vrátila vrátenú hodnotu.

Konfiguračný súbor je nasledovný:



Objekty vytvárame dynamickým načítavaním dll, ich vytváraním reflexiou a inštancovaním cez Activator a ActivatorUtilities, s nasledujúcim kódom:

Výsledky návratu:

ret
"Ahoj itsvse.com"
ex. Posolstvo
"Pre typ 'ClassLibrary1.TestB' nie je definovaný žiadny konštruktor bez parametrov."

ret
"Ahoj itsvse.com"
ret
"Aaaa itsvse.com"

Pri použití Activatora na vytvorenie objektu TestB sa hlási chyba:Pre typ 'ClassLibrary1.TestB' neexistuje definovaný konštruktor bez parametrov.

Vytvorenie TestA a TestB pomocou ActivatorUtilities nehlási chybu a metóda sa dá vykonať normálne, ako je uvedené nižšie:




Nie je problém použiť Activator na inštancovanie objektov v .NET frameworku, ale v jadre asp.net sú zavedené koncepty IOC a DI a mnohé objekty nie sú konštruktormi bez parametrov a musia byť odovzdané do príslušnej implementačnej triedy.

Kde _services statické premenné sú definované nasledovne:

CreateInstance(IServiceProvider, typ, objekt[])
parameter

poskytovateľ
IServiceProvider
Poskytovateľ služieb na riešenie závislostí

Inštancia Typ
Typ
Typ na aktiváciu

Parametre
Objekt[]
Parametre konštruktora, ktoré poskytovateľ neposkytuje


Referencia:Prihlásenie na hypertextový odkaz je viditeľné.

(Koniec)




Predchádzajúci:Mobilná a desktopová analýza bezpečnosti OAuth 2.0 a mechanizmus CodeVerifier
Budúci:Použite JSC na generovanie dll v JavaScripte pre C# volania
Zverejnené 22. 9. 2021 20:31:33 |
Nauč sa učiť...
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com