|
|
Publicado el 2020-9-12 20:57:21
|
|
|
|

Autofac es una pasada. Contenedores NET IoC. Gestiona las dependencias entre clases, de modo que la aplicación pueda modificarse fácilmente a medida que aumentan la escala y la complejidad. Se implementa tratando las clases .NET regulares como componentes. También soy un cliché con los contenedores de Autofac, y he escrito muchos artículos:
Crear un nuevo proyecto ASP.NET Core 3.1 y referenciar paquetes relacionados con autofacs a través de Nuget, de la siguiente manera:
Vamos a crear una nueva interfaz e implementación de ITest, el código es el siguiente:
Crea un nuevo controlador de clase base BaseController, y otros controladores heredan la clase abstracta, añade la propiedad ITest a la clase base, y el código es el siguiente:
Dejemos que el WeatherForecastController herede de la clase abstracta BaseControler, añadiendo el siguiente método de prueba:
El método ConfigureContainer en la clase Startup registra la interfaz y establece la entrada del atributo controlador, cuyo código es el siguiente:
Intenta visitar:El inicio de sesión del hipervínculo es visible.
La excepción NullReferenceException se cita en el mensaje en blanco, como se muestra en la siguiente figura:
NullReferenceException: Object reference not set to an instance of an object.
PasoEl constructor se inyecta en la interfaz ITest, se llama a su método, la prueba pasa y puede llamarse normalmente。
Causas de anomalías
La implementación del Controller es más especial, el Controller no resuelve ni activa por defecto a través de su propio contenedor, está gestionado por el propio MVC, pero Microsoft proporciona este método:
Puedes hacer que el Controlador use su propio contenedor llamando al método AddControllersAsServices(), cuyo código fuente principal es el siguiente:
El método ConfigureServices en el objeto de inicio por defecto se configura de la siguiente manera:
Lo modificamos para:
O:
El código fuente de ServiceBasedControllerActivator es el siguiente:
Una vez configurado, carga el controlador directamente desde el contenedor DI, el controlador analizará el servicio desde Autofac, y la inyección de propiedades configurada entrará en vigor. Como se muestra a continuación:
Finalmente, se adjunta la dirección del código fuente de asp.net núcleo:
El inicio de sesión del hipervínculo es visible.
(Fin)
|
Anterior:Hangfire añade datos normalmente, pero sigue ejecutándose debido a la excepciónPróximo:¿Cómo mostrar datos de Sqlite en tablas avanzadas con E4A?
|