# C\# · Veille technologique

[Source canonique](<https://sebastien.rigaux.be/veille/tags/c-sharp>)

Langage de l’écosystème .NET : système de types, programmation asynchrone et conception du code.

## [Boucles d’agents en C\# avec Microsoft Agent Framework](<https://sebastien.rigaux.be/veille/liens/boucles-dagents-en-c-avec-microsoft-agent-framework>)

Les boucles d’agents enchaînent action, observation et évaluation pour affiner une réponse ou retenter une opération jusqu’à satisfaire un critère. Jesse Liberty illustre le principe en C# avec Microsoft Agent Framework : un agent de boucle, un évaluateur et une limite d’itérations.

L’exemple distingue un marqueur déterministe comme `DONE` d’un évaluateur basé sur un modèle juge, puis détaille les garde-fous à prévoir : délais, appels idempotents, journalisation et suivi des coûts. Chaque itération ajoute en effet latence et consommation de tokens.

2026-11-02 · [Markdown](<https://sebastien.rigaux.be/veille/liens/boucles-dagents-en-c-avec-microsoft-agent-framework.md>) · [Ressource originale](<https://jesseliberty.com/2026/10/26/prompts-are-dead-long-live-loops/>)

## [C\# 15 : des unions exhaustives, avec un coût de boxing à surveiller](<https://sebastien.rigaux.be/veille/liens/c-15-des-unions-exhaustives-avec-un-cout-de-boxing-a-surveiller>)

C# 15 introduit le mot-clé `union` pour représenter une valeur parmi plusieurs types sans les regrouper dans une classe de base ni perdre leur typage dans `object`. Andrew Lock montre comment les `switch` expressions vérifient que chaque cas est traité, et comment déclarer des unions comme `Result<T>`.

Le détail à considérer côté performance : l’implémentation générée stocke la valeur dans un `object`, ce qui boxe les types valeur. L’article présente une implémentation personnalisée avec `TryGetValue` pour éviter ce boxing dans les `switch`.

2026-11-01 · [Markdown](<https://sebastien.rigaux.be/veille/liens/c-15-des-unions-exhaustives-avec-un-cout-de-boxing-a-surveiller.md>) · [Ressource originale](<https://andrewlock.net/exploring-the-dotnet-11-preview-2-dotnet-gets-union-types/>)

## [Microsoft Agent Framework : choisir où intercepter les appels](<https://sebastien.rigaux.be/veille/liens/microsoft-agent-framework-choisir-ou-intercepter-les-appels>)

Dans Microsoft Agent Framework, le middleware du `ChatClient` intercepte les messages échangés avec le LLM, tandis que le middleware d’agent agit sur l’exécution globale, notamment pour gérer session, identité ou budget de tokens. Cette distinction aide à placer la journalisation ou la modification au bon niveau.

L’exemple C# ajoute un middleware d’invocation de fonction qui journalise les appels à l’outil Tavily du seul agent Researcher, sans modifier les autres agents. La trace affiche le nom de la fonction et ses arguments.

2026-11-01 · [Markdown](<https://sebastien.rigaux.be/veille/liens/microsoft-agent-framework-choisir-ou-intercepter-les-appels.md>) · [Ressource originale](<https://jesseliberty.com/2026/08/08/chatclient-middleware-vs-agent-middleware/>)

## [C\# : IfItQuacks transforme le duck typing en bibliothèque](<https://sebastien.rigaux.be/veille/liens/c-ifitquacks-transforme-le-duck-typing-en-bibliotheque>)

IfItQuacks permet d’utiliser en C# des objets qui correspondent à une interface sans l’implémenter ni hériter d’une classe commune. L’attribut `[DuckTyped]` déclenche un générateur de code qui vérifie la compatibilité à la compilation et crée un adaptateur, sans réflexion ni `dynamic`.

Les types anonymes peuvent aussi servir de stubs de test : un objet `{ Name = "Steven", Age = 90 }` satisfait ainsi une interface `IPerson`. Les adaptateurs préservent par ailleurs l’identité en transférant `Equals`, `GetHashCode` et `ToString` à l’objet sous-jacent.

2026-11-01 · [Markdown](<https://sebastien.rigaux.be/veille/liens/c-ifitquacks-transforme-le-duck-typing-en-bibliotheque.md>) · [Ressource originale](<https://steven-giesel.com/blogPost/41599817-4457-441e-b874-1a5c67f4e7cc>)

## [.NET : modéliser les intervalles comme objets métier](<https://sebastien.rigaux.be/veille/liens/net-modeliser-les-intervalles-comme-objets-metier>)

CodoMetis.ValueRanges propose des types d’intervalle .NET pour remplacer les paires de dates et leur logique dispersée. Les cinq variantes — finie, sans borne gauche ou droite, infinie et vide — rendent explicites les formes possibles et leurs règles, tandis que les opérations comme `Contains` et `Overlaps` s’exécutent en mémoire.

Le package EF Core associé fait le pont avec PostgreSQL : les mêmes opérations dans le domaine sont traduites en opérateurs SQL via Npgsql. L’article détaille aussi le compromis de conception : des records abstraits plutôt que des structs, pour représenter les variantes par une hiérarchie de types.

2026-11-01 · [Markdown](<https://sebastien.rigaux.be/veille/liens/net-modeliser-les-intervalles-comme-objets-metier.md>) · [Ressource originale](<https://dev.to/caffeinatedcoder/the-interval-is-the-thing-modelling-range-types-as-first-class-domain-objects-in-net-3jha>)

## [Metalama : générer des patterns C\# et faire appliquer l’architecture au build](<https://sebastien.rigaux.be/veille/liens/metalama-generer-des-patterns-c-et-faire-appliquer-larchitecture-au-build>)

Metalama automatise les patterns transverses en C# avec des aspects qui génèrent le code à la compilation, tout en vérifiant les règles d’architecture dès l’édition. L’implémentation répétitive reste ainsi hors du code métier et du dépôt, tandis qu’un même aspect peut être appliqué à une méthode ou à un ensemble de méthodes sélectionnées par code.

Un aspect peut, par exemple, envelopper une méthode dans un `try/catch` pour journaliser son entrée, son résultat et ses exceptions. Metalama permet aussi de prévisualiser le code transformé et de le déboguer, pour rendre ces transformations inspectables.

2026-10-30 · [Markdown](<https://sebastien.rigaux.be/veille/liens/metalama-generer-des-patterns-c-et-faire-appliquer-larchitecture-au-build.md>) · [Ressource originale](<https://postsharp.net/metalama>)

## [Nouveautés majeures de .NET 11 : runtime, bibliothèques et SDK](<https://sebastien.rigaux.be/veille/liens/nouveautes-majeures-de-net-11-runtime-bibliotheques-et-sdk>)

Cette page officielle Microsoft Learn présente un tour d’horizon complet des nouveautés de .NET 11, actuellement en version candidate. Elle détaille les évolutions du runtime (performances, Async natif, JIT, WebAssembly), des bibliothèques (API numériques, compression, System.Text.Json, sécurité, LINQ, etc.), du SDK (outils CLI, tests, conteneurs, OpenTelemetry) et du langage C# 15. Les développeurs y trouveront un résumé des principales avancées, des liens vers les nouveautés ASP.NET Core, EF Core, Windows Forms et WPF, ainsi que les dates clés de publication. Idéal pour anticiper la migration ou explorer les nouvelles possibilités de la plateforme .NET.

2026-10-15 · [Markdown](<https://sebastien.rigaux.be/veille/liens/nouveautes-majeures-de-net-11-runtime-bibliotheques-et-sdk.md>) · [Ressource originale](<https://learn.microsoft.com/fr-fr/dotnet/core/whats-new/dotnet-11/overview>)

## [Les pièges de la programmation asynchrone en .NET](<https://sebastien.rigaux.be/veille/liens/les-pieges-de-la-programmation-asynchrone-en-net>)

Ce guide rassemble des recommandations sur async, await, les tâches et l’annulation. Il aborde notamment les blocages liés à Task.Result ou Task.Wait et les alternatives adaptées.

2025-02-16 · [Markdown](<https://sebastien.rigaux.be/veille/liens/les-pieges-de-la-programmation-asynchrone-en-net.md>) · [Ressource originale](<https://github.com/davidfowl/AspNetCoreDiagnosticScenarios/blob/master/AsyncGuidance.md>)

## [Vogen : générer des value objects autour des types .NET](<https://sebastien.rigaux.be/veille/liens/vogen-generer-des-value-objects-autour-des-types-net>)

Vogen enveloppe des types primitifs dans des types métier générés. L’exemple CustomerId montre comment obtenir comparaisons et construction encadrée sans écrire tout le code répétitif.

2025-02-09 · [Markdown](<https://sebastien.rigaux.be/veille/liens/vogen-generer-des-value-objects-autour-des-types-net.md>) · [Ressource originale](<https://stevedunn.github.io/Vogen/overview.html>)

## [Évaluer la solidité des tests C\# avec les mutations](<https://sebastien.rigaux.be/veille/liens/evaluer-la-solidite-des-tests-c-avec-les-mutations>)

Le mutation testing modifie volontairement le code pour vérifier que les tests détectent les erreurs introduites. L’article explique cette démarche comme complément à la couverture de code.

2024-12-22 · [Markdown](<https://sebastien.rigaux.be/veille/liens/evaluer-la-solidite-des-tests-c-avec-les-mutations.md>) · [Ressource originale](<https://daninacan.com/how-and-why-to-write-mutation-tests-in-c/>)

## [Une certification gratuite pour apprendre les bases de C\#](<https://sebastien.rigaux.be/veille/liens/une-certification-gratuite-pour-apprendre-les-bases-de-c>)

Microsoft et freeCodeCamp présentent une certification C# accompagnée d’un parcours de 35 heures sur Microsoft Learn. Une ressource structurée pour consolider les fondamentaux du langage.

2023-08-30 · [Markdown](<https://sebastien.rigaux.be/veille/liens/une-certification-gratuite-pour-apprendre-les-bases-de-c.md>) · [Ressource originale](<https://devblogs.microsoft.com/dotnet/announcing-foundational-csharp-certification/>)

## [Générer des builders .NET qui guident la construction d’objets](<https://sebastien.rigaux.be/veille/liens/generer-des-builders-net-qui-guident-la-construction-d-objets>)

Ce générateur automatise les builders pour classes, structs et records. Les étapes imposent les informations obligatoires avant les options, tout en favorisant l’immutabilité des objets.

2023-08-27 · [Markdown](<https://sebastien.rigaux.be/veille/liens/generer-des-builders-net-qui-guident-la-construction-d-objets.md>) · [Ressource originale](<https://github.com/bnayae/Bnaya.BuilderPatternGenerator>)
