Inyección de dependencias en Xamarin Forms con Autofac
La inyección de dependencias es un patrón de diseño, el cual provee los objetos requeridos por una clase, en vez de que la misma clase los gestione.
Esto nos ayudaría a cumplir uno de los principios de SOLID que es Dependency inversion principle. Es una manera de tener el software de manera modular.
Un injector nos provee de las los objetos instanciados de los servicios requeridos por un cliente.
En Xamarin Forms lo podemos integrar para gestionar las dependencias nativas (Dependency Service), ViewModels y Servicios.
Lo primero que debemos hacer es instalar el Nuget de Autofac, librería que nos provee de un contenedor que se encargará de cumplir la tarea del Injector.
Posteriormente deberemos crear nuestros servicios y dependencias nativas que se inyectarán en el constructor de nuestro ViewModel. En este caso AppInformation y LoggerService.
NOTA: La mejor práctica es inyectar una interface, ya que esto nos permitirá realizar un Mock en las pruebas unitarias y en un futuro una refactorización de nuestros servicios sería más sencilla.
AppInformation interface
Implementación AppInformation en iOS
Implementación AppInformation en Android
En el constructor de nuestro ViewModel recibimos los contratos de los servicios y dependencias requeridos.
En la clase App.cs creamos un método que será ejecutado en Android o iOS para registrar las dependencias y crear nuestro Container.
Debemos ejecutar el método previamente creado y registrar la dependencia nativa de AppInformation en Android.
Lo mismo en el AppDelegate de iOS.
Por último inicializamos nuestro BindingContext con el ViewModel instanciado por nuestro Container.
Comentarios
Publicar un comentario