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

Autofac er fantastisk. NET IoC-beholdere. Den håndterer avhengighetene mellom klasser, slik at applikasjonen fortsatt enkelt kan endres etter hvert som skala og kompleksitet øker. Den implementeres ved å behandle vanlige .NET-klasser som komponenter. Jeg er også en klisjé når det gjelder Autofac-beholdere, og jeg har skrevet mange artikler:
Opprett et nytt prosjekt ASP.NET Core 3.1 og referer til autofac-relaterte pakker gjennom nuget, som følger:
La oss lage et nytt ITest-grensesnitt og implementering, koden er som følger:
Opprett en ny BaseController-baseklassekontroller, og andre kontrollere arver den abstrakte klassen, legg til ITest-egenskapen til baseklassen, og koden er som følger:
La WeatherForecastController arve fra BaseController-abstraktklassen, og legge til følgende testmetode:
ConfigureContainer-metoden i Startup-klassen registrerer grensesnittet og setter kontrollerattributtinndata, koden er som følger:
Prøv å besøke:Innloggingen med hyperkoblingen er synlig.
NullReferenceException-unntaket er sitert i den tomme meldingen, som vist i følgende figur:
NullReferenceException: Object reference not set to an instance of an object.
PassKonstruktøren injiseres i ITest-grensesnittet, metoden kalles opp, testen består, og den kan kalles normalt。
Årsaker til avvik
Implementeringen av kontrolleren er mer spesiell, kontrolleren løser og aktiverer ikke som standard gjennom sin egen container, den administreres av MVC selv, men Microsoft tilbyr denne metoden:
Du kan få kontrolleren til å bruke sin egen beholder ved å kalle AddControllersAsServices()-metoden, hvor hovedkildekoden er som følger:
ConfigureServices-metoden i standard Startup-objektet er konfigurert som følger:
Vi endrer det til:
Eller:
Kildekoden til ServiceBasedControllerActivator er som følger:
Når den er konfigurert, last kontrolleren direkte fra DI-containeren, kontrolleren vil analysere tjenesten fra Autofac, og egenskapsinjeksjonen vi har konfigurert trer i kraft. Som vist nedenfor:
Til slutt er kildekoden til kjernen asp.net vedlagt:
Innloggingen med hyperkoblingen er synlig.
(Slutt)
|
Foregående:Hangfire legger til data normalt, men fortsetter å kjøre på grunn av unntaketNeste:Hvordan vise Sqlite-data i avanserte tabeller med E4A?
|