Depurar BroadcastReceiver con Visual Studio Mac

¡Hola!
Hoy vamos con una entrada rápida. En ocasiones, cuando desarrollamos aplicaciones Xamarin Forms (o Xamarin Android), creamos BroadcastReceiver que nos ayudan a recibir ciertos eventos que ocurren. Por ejemplo, nos puede interesar recibir información de cuándo el usuario ha recibido un sms, o que se está agotando la batería… Un ejemplo sencillo de BroadcastReceiver sería el siguiente: Continúa leyendo Depurar BroadcastReceiver con Visual Studio Mac

VS4Mac – Addin para generar Assets

¡Hola!
Cuando creamos aplicaciones Xamarin Forms casi siempre tenemos la necesidad de añadir imágenes para iconos, fondos de pantallas, etc. Esta tarea puede ser un poco pesada porque debemos generar los iconos para las diferentes resoluciones (hdpi, ldpi, xdpi… @2x, @3x…) y luego añadirlos en las diferentes carpetas de recursos de nuestros proyectos iOS o Android. Hace un tiempo escribí una entrada en la que veíamos cómo podíamos generar automáticamente las imágenes para luego añadirlas en los proyectos. Después de jugar un poco con la creación de Addins en VS4Mac he decido migrar aquel proyecto a .NET Standard y crear un Addin para poder hacerlo todo desde VS4Mac.
Por si os interesa, el proyecto está disponible en Github desde donde podréis descargar el archivo .mpack para instalarlo como extensión en VS4Mac. Continúa leyendo VS4Mac – Addin para generar Assets

Generar archivo .mpack con VS4Mac

¡Hola!
El otro día os enseñé un pequeño ejemplo de un addin disponible para VS4Mac que nos permite generar nuestros modelos (clases en C#) a partir de un JSON utilizando QuickType. Cuando creamos un addin para VS4Mac, utilizamos una extensión llamada AddinMaker que está disponible desde la galería de extensiones de VS y nos va a facilitar el poder depurar, pero, ¿y cómo generamos el archivo para que cualquier usuario de VS4Mac pueda instalar nuestra extensión? Continúa leyendo Generar archivo .mpack con VS4Mac

Generar código a partir de JSON en VS4Mac

¡Hola!
Cuando queremos generar nuestros modelos para consumir, por ejemplo, algún servicio web, casi siempre tenemos dos opciones, o crear a mano nuestras clases viendo las propiedades que tiene el archivo JSON o utilizar alguna herramienta que nos las genere automáticamente. En mi caso, normalmente he utilizado una herramienta online llamada Quicktype. En Visual Studio para Windows existe una sencilla extensión que, utilizando Quicktype, integra la opción de generar código a partir de un JSON en el propio IDE. Continúa leyendo Generar código a partir de JSON en VS4Mac

Configurar tabulaciones en Visual Studio Mac

¡Hola!
El otro día me surgió la necesidad de configurar en un proyecto Xamarin Forms las tabulaciones en los archivos XAML con 2 espacios en vez de 4. Después de dar alguna vuelta con las configuraciones de VSMac no encontré la opción de poder configurarlo (no digo que no esté), así que lo di por imposible. Continúa leyendo Configurar tabulaciones en Visual Studio Mac

Crear método genérico en tiempo de ejecución

¡Hola!
El otro día se dio el caso de que, utilizando la librería Akavache, necesitaba invocar un método genérico decidiendo el tipo en tiempo de ejecución. Me explico, el método que necesitaba ejecutar tenía la siguiente firma:

1
    static IObservable<T> GetObject<T>(this IBlobCache This, string key)

Realmente lo que vemos es un método de extensión al que le pasamos una key y nos devuelve el objeto correspondiente a esa key. Lo usaríamos de la siguiente forma:

1
2
3
4
5
6
7
8
9
10
11
12
13
    class Person
    {
        public string Name { get; set; }
 
        public Person(string name)
        {
            this.Name = name;
        }
    }
    private static async Task DummyPerson()
    {
        var dummyPerson = await Akavache.BlobCache.LocalMachine.GetObject<Person>("dummy-key");
    }

Continúa leyendo Crear método genérico en tiempo de ejecución

Decompilando async/await

¡Hola!
Como bien dice el título de la entrada, vamos a echar un vistazo al código que se genera cuando utilizamos async/await. Siempre hemos escuchado que async/await es azúcar sintáctico y que genera un montón de código; pues voy a intentar explicar aprender qué es lo que hace el código que se genera cuando utilizamos async/await, a ver si me sale.
Continúa leyendo Decompilando async/await

Json.NET y el misterio de ImageFormat

¡Hola!
El otro día me ocurrió que, deserializando con Json.NET un objeto que contenía una propiedad ImageFormat, de forma cuasi mágica se serializaba/deserializaba correctamente. En concreto necesitaba hacer esto para una pequeña aplicación donde se generan iconos de diferentes tamaños y, cuando ya estaba pensando en hacer un JsonConverter, me di cuenta de que no era necesario.
Continúa leyendo Json.NET y el misterio de ImageFormat