Visita nuestros cursos en KODOTI. Click para unirte
Estudia con KODOTI. Únete

Ejemplo de inyección de dependencia con NETCore

Explicaremos como hacer uso de las dependencias y tipos que hay como transient, scoped, singleton en un ejemplo de ASP.NET Core.

Rodríguez Patiño, Eduardo
5,008 lecturas
Rodríguez Patiño, Eduardo
Hemos migrado nuestras publicaciones del blog antiguo. Si crees que esta se encuentra incompleta o sin coherencia deja un comentario para darle una pronta solución.

Antes de comenzar con este artículo sino tienes idea que es inyección de depencia te recomiendo leer la siguiente publicación.

Con NETCore tenemos inyección de dependencia nativo ya que, basicamente este ha sido construido mediante interfaces. Para este ejemplo vamos a ver los tipos de depencias que podemos registrar y como invocarlos desde una clase y una vista.

Ciclo de vida de nuestras dependencias

O digámosle tipos de registros que podemos tener en nuestro proyecto.

  • Transient: las dependencias son creadas cada vez que son solicitadas. Por ejemplo, en cada request de nuestra aplicación estas son creadas de nuevo. Es conveniente para liberar de la memoria cuando se dejen de usar.
  • Scoped: a diferencia del transient, mientras que estamos en el request y solicitamos una depencia esta será creada una sola vez hasta que el request muera.
  • Singleton: se creará una sola depencia para todo el ciclo de vida de nuestro proyecto o hasta que el servidor sea reiniciado. Ideal para inicializar clases con parámetros.

Registrando nuestras dependencias en el StartUp

El StartUp.cs es nuestra clase padre en la cual vamos a configurar el comportamiento de nuestra aplicación, para esto nos vamos a ir al método ConfigureServices y agregar nuestras dependencias. Bien, para ello necesitamos crear un intercace y hacer que lo implemente una clase.

public interface IUserService {
    // Tu hermoso código aquí
}

public class UserService : IUserService {
    // Tu hermoso código aquí
}
public void ConfigureServices(IServiceCollection services)
{
    services.AddTransient();
}

Registramos la clase y la interface, desde este punto ya podemos trabajar con las interfaces mediante su inyección en los constructores.

Llamando a las dependencias desde una clase

Previamente habiendo registrado nuestras dependencias podemos hacer uso de estas inicializandolas en el constructor de cada clase.

public class ExampleController {
    private readonly IUserService _userService;

    public ExampleController(IUserService userService) {
        _userService = userService;
    }
}

LLamando a las dependecias desde una vista

En la parte superior de tu vista o archivo razor simplemente agrega la siguiente línea de código.

@inject IUserService userService

<div class="row">
    <div class="col-xs-12">
        <h2>Módulo de usuarios</h2>
    </div>
</div>
¿Te gustó nuestra publicación?
Suscríbete a nuestro boletín