Az Autofac egy fantasztikus. NET IoC konténerek. Kezeli az osztályok közötti függőségeket, így az alkalmazás továbbra is könnyen módosítható a méretarány és a komplexitás növekedésével. Úgy valósítják meg, hogy a normál .NET osztályokat komponensként kezelik. Én is közhelyes vagyok az Autofac konténerekkel kapcsolatban, és sok cikket írtam:
Hozz létre egy új projektet a Core 3.1 ASP.NET és hivatkozz autofac-hoz kapcsolódó csomagokra a nuget-en keresztül, az alábbiak szerint:
Hozzunk létre egy új ITest interfészt és megvalósítást, a kód a következő:
Létrehozz egy új BaseController alaposztály-vezérlőt, és más vezérlők öröklik az absztrakt osztályt, hozzáadjuk az ITest tulajdonságot az alaposztályhoz, és a kód a következő:
Hagyjuk, hogy a WeatherForecastController örököljön a BaseController absztrakt osztályból, hozzáadva a következő tesztmódszert:
A Startup osztályban a ConfigureContainer metódus regisztrálja az interfészt és beállítja a vezérlő attribútumbemenetet, a kód a következő:
Próbálj meg meglátogatni:A hiperlink bejelentkezés látható.
A nullReferenceException kivétel az üres üzenetben szerepel, ahogy az alábbi ábrán látható:
NullReferenceException: Object reference not set to an instance of an object.
PassA konstruktor bekerül az ITest interfészbe, a módszerét hívják, a teszt átmegy, és normálisan is hívható。
Az anomáliák okai
A Controller megvalósítása különlegesebb, a Controller nem oldanva a saját konténerén keresztül működik a Resolve&Activate funkcióval, hanem maga az MVC kezeli, de a Microsoft ezt a módszert kínálja:
A vezérlőt saját konténerrel használhatod az AddControllersAsServices() metódus hívásával, amelynek fő forráskódja a következő:
A ConfigureServices metódus az alapértelmezett Startup objektumban a következőképpen van konfigurálva:
Módosítjuk a következőképpen módosítjuk:
Vagy:
A ServiceBasedControllerActivator forráskódja a következő:
Miután beállítottad, töltsd be a vezérlőt közvetlenül a DI konténerből, a vezérlő az Autofacból parzírozza a szolgáltatást, és a konfigurált tulajdonság injekció lép életbe. Ahogy az alábbiakban látható:
Végül a mag forráskód címe asp.net csatolva:
A hiperlink bejelentkezés látható.
(Vége)
|