Closed gasparoberti closed 2 years ago
Se crearon los proyectos de cada capa (bibliotecas de clases) y sus respectivas referencias.
Por ejemplo para el proyecto WebApi se agregan las referencias a los proyectos Application, Services y Entities.
Las referencias que se agregan se pueden observar en el .csproj del proyecto al que se le están agregando las referencias, en este caso sería WebApi.csproj
Como hay 4 operaciones que se van a necesitar en todas las capas (crud), para no repetir código que sea lo mas reutilizable posible se crea una interfaz en una nueva capa de abstracciones que luego se utilizará para hacer la inversión de control (las referencias o ... siempre deberían ser a las clases de mas alto nivel para lograr mayor nivel de abstracción).
La clase Application implementa la interfaz IApplication que a su vez implementa la interfaz ICrud.
Lo mismo que se hace con la capa Application se hace con la capa Repository.
Application tiene un constructor en el que se inyecta un repositorio genérico (inversión de control: en lugar de crear la instancia del repositorio adentro de la aplicación se inyecta la dependencia ya instanciada creada en su respectivo lugar, el contenedor).
Luego usando el patrón Adapter adaptaremos la aplicación al repositorio en los cuatro métdos del crud.
De manera similar se hace la adaptación en el repositorio. Se configura la inyección de dependencia para poder utilizarlo en algún endpoint de la app. La conf se hace en el Startup.cs
Creamos la entidad footballteam y su respectivo controlador con un constructor que recibe por parámetro la aplicación de Footballteam.
Después creamos un método Get en el controlador que devuelva un objeto footballteam que creamos. Probando en postman o en swagger en la url https://localhost:5001/api/FootballTeam obtenemos el valor del objeto que estamos creando en el get.
Definición de bibliotecas de clases que conformarán la arquitectura del proyecto.