C# et JSON

Si vous devez utiliser des données formatées avec le standard JSON, voici un truc simple pour démarrer (mais vous pouvez complexifier à votre guise ;)). J’utilise pour ce faire l’extension Web Essentials et le package NuGet Json.NET. Le fichier données JSON que j’utilise est celui-ci: Fichier exemple JSON (source).

Voici les étapes pour prendre les données JSON, générer les classes nécessaires et téléchargés les données et remplir ces nouvelles classes:

  • Installer l’extension Web Essentials
  • Créer une nouveau fichier de classe
  • Mettre dans le presse-papier un extrait ou l’ensemble des données JSON (Copier ou CTRL-C)
  • Cliquer-droit dans l’éditeur ou dans le menu EDITION/Collage Spécial et sélectionner “Coller le code JSON en tant que classes”

image

Ceci va créer des classes à partir du code JSON. Dans notre exemple, ceci donne les classes suivantes:

public class Rootobject
{
    public Items items { get; set; }
}

public class Items
{
    public Item[] item { get; set; }
}

public class Item
{
    public string id { get; set; }
    public string type { get; set; }
    public string name { get; set; }
    public float ppu { get; set; }
    public Batters batters { get; set; }
    public Topping[] topping { get; set; }
    public Fillings fillings { get; set; }
}

public class Batters
{
    public Batter[] batter { get; set; }
}

public class Batter
{
    public string id { get; set; }
    public string type { get; set; }
}

public class Fillings
{
    public Filling[] filling { get; set; }
}

public class Filling
{
    public string id { get; set; }
    public string name { get; set; }
    public float addcost { get; set; }
}

public class Topping
{
    public string id { get; set; }
    public string type { get; set; }
}

Par la suite, nous devons télécharger ce fichier depuis notre application pour afficher/traiter les données. Pour ce faire:

  • Ajouter le package NuGet Json.NET
  • Ajouter les usings suivants:
    • using Newtonsoft.Json;
      using System.Net.Http;
  • Utilisation de HttpClient et Json.Net pour extraire les données JSON et populer nos classes
    • private static async Task<Rootobject> GetData()
      {
          HttpClient client = new HttpClient();
          var response = await client.GetStringAsync("http://www.gabrielmongeon.com/public/blog/donuts.js");
          var root = JsonConvert.DeserializeObject<Rootobject>(response);
      
          return root;
      }

Voilà, vous avez une structure de données rempli avec des données provenant de JSON. Il ne reste plus qu’à trouver/créer une source de données et d’afficher/formater ces données dans votre application.

Bonne programmation

Créer votre première application Services Mobile d’Azure

Il est très facile de créer votre première application Windows 8, Windows Phone 8 ou iOS avec les outils Services Mobile d’Azure. Dans ce billet je vais démontrer comment créer une application exemple “ToDo”. En fait, cela va vous prendre plus de temps lire ce billet que d’exécuter les étapes de celui-ci!

Loguer vous sur votre portail Windows Azure et rendez-vous dans la section Services Mobiles. Cliquer sur le lien Créer un service mobile.

image

Une fenêtre s’ouvre, entrez l’url, qui deviendra <monUrl>.azure-mobile.net. Vous indiquez si vous désirez créer une nouvelle base de données ou réutiliser une existante. Dans cet exemple nous allons en créer une. Finalement indiquez la région de votre service.

image

Puisque nous créons une nouvelle base de données, vous devez inscrire le nom, le serveur et l’utilisateur de cette nouvelle base de données.

image

Ensuite, attendez que la magie opère, et appuyer sur votre nouveau service.

image

Dans la page d’accueil du service, choisissez une plateforme, dans notre cas Windows Store pour une App Windows 8. Ensuite, dans la section Mise En Route, cliquer sur le lien Créer une application Windows Store.

image

À partir ce cette section, vous n’avez qu’à suivre les indications:

  1. Obtenez les outils, soit VS2012 Express pour Windows 8 et le SDK pour les Mobile Services pour vous permettre de modifier/exécuter l’application
  2. Créer une table TodoItem: ceci va créer une table dans la base de données que l’on a créé précédemment.
  3. Télécharger et exécuter l’application: sélectionnez la langue, soit C# ou JavaScript (moi je préfère la première option ;) ) et appuyez sur Télécharger.

image

Vous avez maintenant télécharger, sous format ZIP, votre application. Vous n’avez qu’à l’extraire, l’ouvrir dans VS2012 Express pour Windows 8 et l’exécuter(F5). Voilà, votre première App Windows 8 utilisant Azure comme base de données.

Vous avez pu remarquer que plusieurs options différentes s’offre à vous (plateforme, langage, base de données, connectez à votre App existante, etc.), il ne reste plus qu’à trouver quel sera votre App!

Bon développement dans le nuage!

Visual Studio 11: Attributs Caller

Une des nouveautés de Visual Studio 11 et du framework 4.5 sont les attributs Caller:

  • CallerMemberName: permet d'obtenir la méthode ou le nom de la propriété de l'appel à la méthode.
  • CallerFilePath: permet d'obtenir le chemin d'accès complet du fichier source qui contient l'appelant. C'est le chemin d'accès de fichier au moment de la compilation.
  • CallerLineNumber: permet d'obtenir le numéro de ligne dans le fichier source vers lequel la méthode est appelée.

Ces attributs permettent d’alléger le code selon certains scénarios, comme par exemple la journalisation(logging) ou lorsque que vous utiliser l’interface INotifyPropertyChanged (comme pour le MVVM) et devez passez le nom de la propriété appelante.

Voici un exemple très simple de leur utilisation dans le cadre de la journalisation:

    class Logger 
    { 
        public static void LogMessage(string msg, 
            [CallerMemberName] string member = "", 
            [CallerFilePath] string file = "", 
            [CallerLineNumber] int line = 0) 
        { 
            string message = String.Format("{0} : Member {1} in file {2} at line {3} = {4}", 
                        DateTime.Now.ToString(), member, file, line, msg); 
            Debug.WriteLine(message); 
            Console.WriteLine(message); 
        } 
    }

Pour inscrire une entrée dans la journalisation, il suffit simplement de fournir le message désiré et les attributs s’occuperont du reste!

class Program 
{ 
        static void Main(string[] args) 
        {
            Logger.LogMessage("Error!!!"); 
            Console.ReadLine(); 
        } 
}

Aussi simple que cela!

Bonne journalisation ;)

Microsoft MVP C# 2012

P1091070

(English below)

Pour une cinquième année consécutives, j’ai été renouvelé comme Microsoft MVP Visual C#! Même s’il n’y a pas d’anneau sur mon trophée pour le prouver…

Bonne année!


For a fifth year in a row I’ve been renew as a Microsoft MVP Visual C#!
Even if I do not have a ring on my award to prove it…

Happy new year!

Microsoft Gadgeteer, le début

À la fin de l’année dernière, j’avais publié que Microsoft Research travaillait sur un prototype de plateforme électronique roulant sous NETMF nommée Gadgeteer. Et bien il semble maintenant qu’il soit sorti de la phase de recherche pour “commercialiser” cette plateforme: Microsoft .NET Gadgeteer.

GHI Electronics ont sorti le premier kit Gadgeteer nommée GHI FEZ Spider Starter Kit. Celui-ci vous permet de coder vous-même à partir de votre langage préféré (et je parle ici du C# ;) ) un module électronique sans connaitre les bases de l’électronique. En fait, c’est une abstraction matérielle pour permettre aux hobbyiste en herbes de commencer sans apprendre comment souder ou connecter les divers éléments électroniques.

Vous pouvez voir les 2 premières applications démonstrateurs:

Arcade Console

Flipbook maker

Alors, cela vous intéresse?

Microsoft MVP 2011

microsoft_mvp_logo[1]Pour une quatrième année consécutive, j’ai reçu le Microsoft Most Valuable Professional Award dans la catégorie Visual C#.

Je félicite tous les MVP qui ont été aussi renouvelés pour 2011 et les nouveaux MVP!

C# 5.0 : Programmation asynchrone

Pour ceux qui ne sont pas au courant, vous pouvez télécharger le Visual Studio Async CTP pour avoir un aperçu de ce qui s’en vient dans le monde asynchrone! Ce n’est que la version CTP, donc entre cette version et la version officiel, il peut y avoir du changement.

Aussi, visitez le blog de Eric Lippert pour en savoir plus sur le sujet.

[VS2010 Tips] Insertion multi-lignes

En lisant l’article de MSDN permettant de convertir des applications VBA en C# 4.0, je me suis rappelé la fameuse fonction ALT+[Sélection] permettant d’insérer le même texte/code sur plusieurs ligne à la fois. Alors, voici la version française de cette partie de l’article:

Appuyer sur ALT et sélectionner l’endroit ou vous désirez insérez votre code (sélection en bleu pâle dans l’image ci-dessous:
image
Tapez votre code et boom! Toutes les sélectionnés ont été remplis de votre code:

image

Et comme un commentaire dans l’article le spécifie, cela peut aussi s’appliquer pour la fin d’une ligne, tel qu’ajouter les ; à la fin de vos ligne!