
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- El atributo CallerArgumentExpression, o cómo conocer las expresiones usadas como argumentos en llamadas a un método en C#
José María Aguilar - Funciones constructoras en Javascript
Oscar Sotorrío
.NET Core / .NET
- Reading a stream of JsonDocuments separated by new lines (ndjson)
Gérald Barré - Merging Multiple PDFs Using the iText Library
Matjaz Prtenjak - The convenience of System.IO
Richard Lander - Pangram validator in one line
Christian Heilmann - Implementing Distributed Locks in .NET Core with Redis or ZooKeeper
Hamed Salameh - MoonSharp - Running Lua Scripts in .NET
Khalid Abuhakmeh - Updates On Microsoft’s BinaryFormatter Obsoletion Strategy
DevExpress Blogs - Provide opt-in to experimental APIs using C#12 ExperimentalAttribute
Maarten Balliauw - Comparing ForEach Method and Foreach Statement in C#
Code Maze - Let’s build a custom Microsoft Graph connector
Waldek Mastykarz - Read and Write Windows Registry in C#
Code Maze - ConfigureAwait in .NET 8
Stephen Cleary - Discovering The Features Of DotNetFiddle – How To Compile C# Online
Nick Cosentino - .NET Task Parallel Library vs System.Threading.Channels
Charles Chen - TimeProvider makes it easier to mock time in .NET 8
David Grace - Automating Memory Profiling with the JetBrains dotMemory Profiler API
Steve Gordon - Interactive LINQ tutorial, especially for beginners
Steven Giesel
Publicado por José M. Aguilar a las 8:05 a. m.
Etiquetas: enlaces

El otro día me descubrí escribiendo un código parecido al siguiente:
return $"Order: {Items.Length} items, {Total.ToString("#,##0.#0")}";
Mal, lo que se dice mal, no estaba; funcionaba perfectamente y cumplía los requisitos, pero me di cuenta de que no estaba aprovechando todo el potencial de las cadenas interpoladas de C# que ya habíamos comentado por aquí mucho tiempo atrás.
Y como siempre que tengo algún despiste de este tipo, pienso que quizás pueda haber alguien más al que le ocurra o no esté al tanto de esta posibilidad el lenguaje, así que vamos a ver cómo podíamos haberlo implementado de forma algo más simple.

Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- Cómo evitar que entren argumentos nulos en métodos de C#: un recorrido histórico (y lo que nos trae el futuro)
José María Aguilar - Limpiar un input type=file
José María Aguilar
.NET Core / .NET
- Avoiding flaky tests with TimeProvider and ITimer: Exploring the .NET 8 preview
Andrew Lock - Managing Directories With Directory and DirectoryInfo in C#
Code Maze - Exploring Object Layouts - To kill a mocking bug
Jeroen Vannevel - Functional Error Handling in .NET With the Result Pattern
Milan Jovanović - A C# port of validation with partial round trip
Mark Seemann - Yes you can create classes on the stack!
Steven Giesel - How to Build a Query String for a URL in C#?
Code Maze - Caching your WebView Environment to manage multiple WebView2 Controls
Rick Strahl - Handling Dates With Noda Time in .NET
Code Maze - Collection expressions brings the spread operator to C# 12
David Grace - How to Force Run .NET Application as Administrator
Code Maze - Await Tuples Directly
Mehran Davoudi - Save Files With Elevated Permissions on UnauthorizedAccessException
Rick Strahl

Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- El Tao de la Programación
José María Aguilar - Generación de rutas con parámetros de query string en Blazor 6
José María Aguilar
.NET Core / .NET
- .NET 8 Top 10 New Features
Patrick Smacchia - What′s new in C# 12: overview
Konstantin Volohovsky - Customizing the behavior of record copy constructors
Gérald Barré - Ignore Null Values With AutoMapper
Code Maze - Open-Sourcing Metalama Compiler, a Roslyn Branch with Source Transformers
Gael Fraiteur - How To Handle Exceptions in CSharp – Tips and Tricks for Streamlined Debugging
Nick Cosentino - C# Tip: How to create Unit Tests for Model Validation
Davide Bellone - A Generic Timeout Helper
Ricardo Peres - Interfaces can have private methods
Steven Giesel - Source Code Generators, DIY
Bnaya Eshet - C# Record Explained
Patrick Smacchia
Pues hoy vamos con un truquillo rápido ;)
Como sabemos, cuando usamos Razor Pages para construir aplicaciones sobre ASP.NET Core, la convención por defecto obliga a que nuestras páginas se encuentren en la carpeta /Pages del proyecto.
¿Pero qué ocurre si somos algo tiquismiquis y no nos gusta esa ubicación o no podemos usarla por cualquier motivo? En este post vamos a ver cómo cambiar esta convención para que nuestras páginas Razor se encuentren en otra carpeta.

Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- ¿Por qué no compila este código C#?
José María Aguilar - ASP.NET MVC: obtener id y nombre de un control de formulario
José María Aguilar
.NET Core / .NET
- Customizing the name of embedded resources in .NET
Gérald Barré - Updates to Docker images in .NET 8: Exploring the .NET 8 preview
Andrew Lock - Source Generator playground
Bart Wullems - C# Overtaking Java in Popularity Index
David Ramel - Using Keyed Services to Resolve Dependencies in .NET
Code Maze - Pre-commit hooks with Husky.NET - build, format, and test your .NET application before a Git commit
Davide Bellone - .NET 6 - Parallel.ForEachAsync
Bart Wullems - Microsoft .NET Code Analysis: Remove Unnecessary Lambda Expressions
David McCarter - 3 Reasons to Delay Adopting .NET 8 and 10 to do it ASAP
Uno Platform Team