Autofac ir lielisks. NET IoC konteineri. Tas pārvalda atkarības starp klasēm, lai lietojumprogrammu joprojām varētu viegli modificēt, palielinoties mērogam un sarežģītībai. Tas tiek īstenots, apstrādājot parastās .NET klases kā komponentus. Es arī esmu klišeja par Autofac konteineriem, un esmu uzrakstījis daudz rakstu:
Izveidojiet jaunu projektu ASP.NET Core 3.1 un atsaucieties uz ar autofac saistītām pakotnēm, izmantojot nuget, šādi:
Izveidosim jaunu ITest saskarni un ieviešanu, kods ir šāds:
Izveidojiet jaunu BaseController bāzes klases kontrolieri, un citi kontrolieri pārmanto abstrakto klasi, pievienojiet ITest rekvizītu bāzes klasei, un kods ir šāds:
Ļaujiet WeatherForecastController mantot no BaseController abstraktās klases, pievienojot šādu testēšanas metodi:
Startup klases ConfigureContainer metode reģistrē interfeisu un iestata kontroliera atribūta ievadi, kods ir šāds:
Mēģiniet apmeklēt:Hipersaites pieteikšanās ir redzama.
NullReferenceException izņēmums ir citēts tukšajā ziņojumā, kā parādīts šajā attēlā:
NullReferenceException: Object reference not set to an instance of an object.
IzietKonstruktors tiek ievadīts ITest saskarnē, tā metode tiek izsaukta, tests nokārtots, un to var saukt par normālu。
Anomāliju cēloņi
Kontroliera ieviešana ir īpašāka, kontrolieris pēc noklusējuma neizšķir un neaktivizē, izmantojot savu konteineru, to pārvalda pats MVC, bet Microsoft nodrošina šo metodi:
Jūs varat likt kontrolierim izmantot savu konteineru, izsaucot AddControllersAsServices() metodi, kuras galvenais avota kods ir šāds:
Metode ConfigureServices noklusējuma startēšanas objektā ir konfigurēta šādi:
Mēs to modificējam, lai:
Vai:
ServiceBasedControllerActivator avota kods ir šāds:
Pēc konfigurēšanas ielādējiet kontrolieri tieši no DI konteinera, kontrolieris parsēs pakalpojumu no Autofac, un mūsu konfigurētā rekvizītu injekcija stāsies spēkā. Kā parādīts zemāk:
Visbeidzot, ir pievienota asp.net kodola avota koda adrese:
Hipersaites pieteikšanās ir redzama.
(Beigas)
|