Azure Notifier, un sistema de notificación basado en Logic Apps y Azure Functions

Hasta hace unas semanas, un compañero interno de Microsoft había construido una aplicación que permitía recibir por correo electrónico las novedades relacionadas con Azure de las principales fuentes de información: el blog de Azure, las actualizaciones de servicio y el contenido de Channel 9. La aplicación era un proyecto personal y tras irse de la compañía el servicio desapareció.

Debido al ritmo de evolución de los servicios de Azure, una utilidad como esta era muy práctica para tener una visión diaria de qué había nuevo, qué había cambiado y qué nuevo contenido multimedia estaba disponible para ser consumido. Es por ello que estos días de vacaciones me propuse ver si se podía montar algo rápido con los servicios PaaS de Azure y así es como me he construido mi propio servicio notificador.

Continue reading Azure Notifier, un sistema de notificación basado en Logic Apps y Azure Functions

Friend Assemblies, accediendo a un assembly desde otro…

Imagina que estás desarrollando un proyecto basado en pruebas y necesitas acceder a elementos internos de otro ensamblado, ¿cómo lo haces?

Una posibilidad es declarar todo aquello a lo que necesitas acceder de caracter público y así ya tienes acceso desde tu ensamblado de pruebas; sin embargo, hay un problema ya que no solo puedes acceder tú sino que estás dejándolo visible a cualquier otro ensamblado.

La otra es emplear el atributo InternalsVisibleTo definido en el namespace System.Runtime.CompilerServices. Cuando compilamos uno de nuestros ensamblados es posiblie definir qué otros ensamblados son considerados amigos dándole permiso para acceder a todos los miembros internos que se encuentren definidos de la misma forma que si se encontrara dentro del mismo namespace.

Su funcionamiento es sencillo, únicamente tendremos que añadir en la cabecera de nuestra clase el siguiente código:

[assembly: InternalsVisibleTo("Otro.Ensamblado.Tests")]

y podremos trabajar desde el ensamblado “Otro.Ensamblado.Tests” con los métodos y propiedades declaradas como internas sin tener que cambiarles su visibilidad a públicas.