Sébastien Rigaux

Veille technologique

← Tous les liens

C#

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

Schéma d’une boucle agentique : l’agent agit, observe, évalue, puis recommence ou s’arrête.

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.

Repéré via C# Digest

Extrait de code C# déclarant les records Windows, Linux et MacOS, puis une union SupportedOS contenant ces trois types.

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.

Andrew LockRepéré via C# Digest

Trois joueurs de basketball illustrent une séquence : le premier tient le ballon, le deuxième observe avec des jumelles et le troisième lance le ballon vers le panier.

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.

Repéré via C# Digest

Illustration jaune « Buy me a coffee » avec une tasse stylisée.

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.

Steven GieselRepéré via C# Digest

Bandeau de l’article avec son titre, le nom de Ricardo Groß et la date « Jun 11 », sur fond blanc.

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.

@Repéré via C# Digest

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.

Repéré via C# Digest

Logo .NET 11

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.

gewarren