|
|
Julkaistu 2020-9-12 20:57:21
|
|
|
|

Autofac on mahtava. NET IoC -kontteja. Se hallinnoi luokkien välisiä riippuvuuksia, jotta sovellusta voidaan silti helposti muokata skaalauksen ja monimutkaisuuden kasvaessa. Se toteutetaan käsittelemällä tavallisia .NET-luokkia komponentteina. Olen myös kliseinen Autofac-konttien suhteen, ja olen kirjoittanut paljon artikkeleita:
Luo uusi projekti ASP.NET Core 3.1 ja viittaa autofac-aiheisiin paketteihin nugetin kautta seuraavasti:
Luodaan uusi ITest-rajapinta ja toteutus, koodi on seuraava:
Luo uusi BaseController-perusluokan ohjain, ja muut ohjaimet perivät abstraktin luokan, lisää ITest-ominaisuus perusluokkaan, ja koodi on seuraava:
Annetaan WeatherForecastControllerin periä BaseController-abstrakti luokka, lisäten seuraavan testimetodin:
ConfigureContainer-menetelmä Startup-luokassa rekisteröi rajapinnan ja asettaa ohjaimen attribuutin syötteen, koodi on seuraava:
Yritä käydä katsomassa:Hyperlinkin kirjautuminen on näkyvissä.
NullReferenceException-poikkeus lainataan tyhjässä viestissä, kuten seuraavassa kuvassa on esitetty:
NullReferenceException: Object reference not set to an instance of an object.
PassiKonstruktori injektoidaan ITest-rajapintaan, sen menetelmä kutsutaan, testi läpäisee ja se voidaan kutsua normaalisti。
Poikkeavuuksien syyt
Controllerin toteutus on erityisempi, Controller ei Resolve&Activate oletuksena oman konttinsa kautta, vaan sitä hallinnoi MVC itse, mutta Microsoft tarjoaa tämän menetelmän:
Voit saada ohjaimen käyttämään omaa säiliötään kutsumalla AddControllersAsServices()-metodin, jonka päälähdekoodi on seuraava:
ConfigureServices-metodi oletuskäynnistys-objektissa on konfiguroitu seuraavasti:
Muokkaamme sitä seuraavasti:
Tai:
ServiceBasedControllerActivatorin lähdekoodi on seuraava:
Kun säädin on konfiguroitu, lataa ohjain suoraan DI-kontista, ohjain jäsentää palvelun Autofacista, ja konfiguroitu ominaisuusinjektio astuu voimaan. Kuten alla on esitetty:
Lopuksi ytimen lähdekoodiosoite asp.net liitetään:
Hyperlinkin kirjautuminen on näkyvissä.
(Loppu)
|
Edellinen:Hangfire lisää dataa normaalisti, mutta jatkaa suoritusta poikkeuksen vuoksiSeuraava:Kuinka näyttää Sqlite-data edistyneissä taulukoissa E4A:lla?
|