Inyección de propiedades usando Unity

En un artículo anterior, aprendimos cómo crear un proyecto en ASP.NET e implementar la inyección de dependencias usando el contenedor Unity. El ejemplo que vimos en ese artículo fue usando un método que se llama inyección de dependencias por constructor, es decir, Unity inyecta las dependencias en el constructor de una clase al instanciarla. Pero este no es el único método disponible, otra forma en la que podemos hacer la inyección de dependencias con Unity es mediante la inyección de propiedades en nuestras clases. Vamos a ver un ejemplo a continuación.

En primer lugar, vamos a crear un proyecto en ASP.NET MVC y a instalar Unity con el Nuget Package Manager (si quieres ver más detalle de cómo hacerlo, visita mi anterior post). En el nuevo proyecto, vamos a crear una interface sencilla con un método, como vemos a continuación:

public interface IMessages
{
    string Greeting();
}

Luego, vamos a crear en nuestro proyecto una clase que implemente la interface que acabamos de crear, con el siguiente código:

public class EnglishMessages : IMessages
{
    public string Greeting()
    {
        return "Hello!";
    }
}

A continuación, creamos un controlador MVC con una propiedad y método corto para mostrar un mensaje:

public class MessagesController : Controller
{
    [Dependency]
    public IMessages Messages { getset; }
 
    // GET: Messages
    public ActionResult Index()
    {
        ViewBag.Message = Messages.Greeting();
        return View();
    }
}

En este código anterior hay que notar el uso del atributo [Dependency] de Unity para la propiedad Messages. El tipo de la propiedad es una interface, y el uso de este atributo será el que le permite identificar a Unity que debe inyectar una dependencia de una clase concreta. Para esto mismo, debemos configurar la dependencia a resolver para que Unity pueda funcionar correctamente, y lo hacemos modificando el código del método RegisterTypes que se encuentra en la clase UnityConfig en la carpeta App_Start del proyecto ASP.NET MVC, así:

public static void RegisterTypes(IUnityContainer container)
{
    container.RegisterType<IMessagesEnglishMessages>();
}

El último paso es adicionar una vista para que se vea el mensaje que estamos enviando desde el controlador MVC que creamos anteriormente. El código de la vista para mostrar el mensaje es el siguiente:

@{
    ViewBag.Title = "Index";
}
 
Message: @ViewBag.Message

Hecho todo lo anterior, lo que nos queda es ejecutar la aplicación web en el navegador, y veremos como funciona la inyección de propiedades de Unity!

unityprop_01

Espero que este artículo les haya sido útil. El código fuente del proyecto hecho en el post lo pueden descargar desde mi repositorio de GitHub.

ironcat

Anuncios

2 Responses to Inyección de propiedades usando Unity

  1. Pingback: Resolviendo dependencias nombradas en Unity | hgr.net

  2. Pingback: Inyección de propiedades en ASP.NET MVC usando Ninject | hgr.net

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: