Accueil

LINQ en C# : principes et fonctionnement

LINQ (Language Integrated Query) est l’une des fonctionnalités les plus puissantes de C#. Il permet d’interroger et de transformer des collections, des bases de données, du XML ou tout autre source de données avec une syntaxe unifiée, directement intégrée au langage. Comprendre ses principes — exécution différée, composition d’opérateurs, distinction IEnumerable<T> / IQueryable<T> — est indispensable pour écrire du code .NET lisible, maintenable et performant.

Lire la suite

Semantic API Roslyn pour les Source Generators (Code Gen)

La Semantic API de Roslyn complète la Syntax API en donnant accès à la compréhension “sémantique” du code : types réels, symboles, héritage, interfaces implémentées, attributs résolus, etc. Dans un Source Generator, c’est elle qui permet de passer d’un simple nœud de syntaxe à un modèle riche sur lequel baser la génération de code.

Dans cet article, on va voir :

  • ce qu’est un SemanticModel ;
  • comment obtenir des ISymbol (types, méthodes, propriétés) à partir de la syntaxe ;
  • comment lire les attributs et types effectifs ;
  • comment utiliser efficacement la Semantic API dans un générateur incrémental.

Lire la suite

Syntax API Roslyn pour les Source Generators (Code Gen)

La Syntax API de Roslyn est le point d’entrée bas niveau pour analyser le code C# dans un Source Generator. Elle permet de parcourir l’arbre de syntaxe (AST) des fichiers .cs pour repérer les éléments qui vous intéressent (attributs, classes, méthodes…) avant de générer du code.

Dans cet article, on va voir :

  • ce qu’est un arbre de syntaxe ;
  • comment utiliser un ISyntaxReceiver (générateurs classiques) ;
  • comment retrouver les symboles à partir de la syntaxe ;
  • comment aborder la Syntax API dans un générateur incrémental.

Lire la suite

gRPC : comprendre le protocole et ses différences avec HTTP/REST

gRPC (gRPC Remote Procedure Call) est un framework open source de communication inter-processus développé par Google. Il repose sur HTTP/2 et Protocol Buffers (Protobuf) pour offrir des appels distants fortement typés, performants et multi-langages. Là où REST/HTTP domine les APIs publiques depuis des années, gRPC s’impose de plus en plus pour la communication inter-services, notamment dans les architectures microservices. Cet article explique ce qu’est gRPC, comment il fonctionne, et dans quels cas le préférer (ou non) à HTTP/REST.

Lire la suite

Source Generators en .NET (Code Gen)

Les Source Generators sont une fonctionnalité introduite avec .NET 5 et C# 9 qui permet de générer du code C# à la compilation, à partir du code existant. Contrairement aux outils de génération de code “hors bande” (T4, scripts, etc.), les source generators s’intègrent directement au compilateur Roslyn et fonctionnent de manière transparente dans Visual Studio, Rider ou VS Code.

Ils sont particulièrement utiles pour :

  • Éviter le code répétitif (boilerplate).
  • Générer du code optimisé à partir de métadonnées (attributs, fichiers JSON, etc.).
  • Fournir de l’intellisense et des diagnostics au moment de l’écriture du code.

Lire la suite

Cibler plusieurs frameworks .NET dans un même projet

Lorsqu’une bibliothèque doit être utilisable par plusieurs types d’applications (.NET Framework, .NET Core, .NET moderne, etc.), il est possible de cibler plusieurs frameworks .NET dans un même projet. Cette technique est appelée multi‑ciblage (multi‑targeting).

L’idée est simple : un seul projet .csproj, plusieurs frameworks cibles, et le SDK .NET génère un assembly par framework.

Lire la suite