 
Me encanta que el lenguaje C# vaya introduciendo características que consiguen que cada vez tengamos que escribir menos para conseguir lo mismo, y, sobre todo, si la legibilidad posterior del código no se ve comprometida.
Uno de estos casos son los recientes target-typed new expressions, o expresiones new con el tipo del destino, que básicamente permite evitar la introducción del tipo de datos al usar el constructor de una clase, siempre que el compilador sea capaz de inferirlo por su contexto.
Vamos a echarle un vistazo en este post.
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- Analiza tu código a fondo y desde distintas perspectivas con NDepend
 José María Aguilar
- Localizar errores de validación del binding en ASP.NET Core MVC
 José María Aguilar
.NET Core / .NET
- What's new in Windows Forms in .NET 6.0 Preview 5
 Igor Velikorossov
- C# Type Conversion (and Coffee!) • Programming is Fun
 Janell Baxter
- What is the difference between Reflection and dynamic keyword in C#?
 Shivprasad Koirala
- Default Your FirstOrDefault in .NET 6.0
 Adam Storr
- Exploring Fluent Assertions
 Gérald Barré
- Abusing C# binding redirects for fun and profit - Injecting custom code without modifying files
 Bill Wilson
- Customized JSON formatting with Serilog
 Nicholas Blumhardt
- ICYMI C# 9 New Features: More Pattern Matching Features
 Jason Roberts
- Package Validation
 Anirudh Agnihotry
- Understanding async/await State Machine in .NET
 Mykhailo Konovalov
- CompactExifLib: Access to EXIF Tags in JPEG, TIFF and PNG Files
 Hanns-Peter Kalb
 
Hace algunas semanas echamos un vistazo rápido a Blazor UI Components, la suite de componentes profesionales para Blazor proporcionada por Syncfusion.
Como vimos, se trata de una completa colección que soluciona las necesidades más habituales durante la creación de la interfaz de usuario de aplicaciones Blazor, tanto Server como WebAssembly. Más de 70 componentes que incluyen controles de entrada de datos, botones, calendarios, layouts, rejillas de datos o gráficas estadísticas, entre otros. Y lo mejor es que, aunque se trata de un producto comercial, su generosa licencia community permite que muchos podamos utilizarlos de forma totalmente gratuita.
Hoy vamos a profundizar un poco en los componentes de presentación de datos estadísticos, o Chart Components, que por su potencia, versatilidad y calidad del resultado merece un post en sí mismos.
Nota: lo que estáis leyendo es un post patrocinado por Syncfusion, pero en ningún momento han revisado previamente o condicionado de alguna forma su contenido.
Publicado por José M. Aguilar a las 8:05 a. m.
Etiquetas: blazor, blazorserver, blazorwasm, componentes, sponsored, syncfusion
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- C# Source generators: metaprogramación en tiempo de compilación
 José María Aguilar
- Cargar automáticamente objetos del modelo en acciones ASP.NET Core MVC
 José María Aguilar
.NET Core / .NET
- Announcing .NET 6 Preview 5
 Richard Lander
- Making Your Life Easier with C# Scripting
 Peter Vogel
- Caching Enum.ToString to improve performance
 Gérald Barré
- Conversation about diagnostics
 Richard Lander
- Setting Content for HttpClient Testing with JSON.NET and System.Text.Json
 Adam Storr
- Hot Reload for .NET Developers
 Daniel Gomez Jaramillo
- Migration of Bing’s Workflow Engine to .NET 5
 Ben Watson
- dotnet repl
 Scott Hanselman
- Running .NET Core Apps on a Framework other than Compiled Version?
 Rick Strahl
- ICYMI C# 9 New Features: Top-level Statements
 Jason Roberts
- C# Pattern Matching Quick Guide And Examples
 Khalid Abuhakmeh
- Conversation about networking
 Richard Lander
- Show a name and profile photo with .NET and Gravatar
 Thomas Ardal
- Quick Noda Time Conversions
 Simon Timms
- C# 10 - record structDeep Dive & Performance Implications
 Niels Rasmussen
 
No hace demasiado tiempo he descubierto en el framework la clase  ActivatorUtilities, una pequeña joyita disponible en Microsoft.Extensions.DependencyInjection, que puede resultar interesante para implementar fácilmente factorías o cualquier tipo de código donde tengamos que instanciar manualmente clases con dependencias hacia servicios registrados en el contenedor de nuestra aplicación.
La clase estática ActivatorUtilities ofrece básicamente tres métodos públicos:
- CreateFactory(), para crear factorías de objetos.
- CreateInstance()/- CreateInstance<T>(), para crear instancias de objetos.
- GetServiceOrCreateInstance()/- GetServiceOrCreateInstance<T>(), para obtener una instancia desde el inyector, o bien crearla manualmente con- CreateInstance().
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- Cómo crear bibliotecas de clases o proyectos de consola .NET 5 en lugar de .NET Core 3.1
 José María Aguilar
- Quizás no estés comparando con null de forma totalmente correcta
 José María Aguilar
.NET Core / .NET
- Date, Time, and Time Zone Enhancements in .NET 6
 Matt Johnso
- Debugging C# Source Generators with Visual Studio 2019 16.10
 Steve Collins
- Different ways to check if a value is null in C#
 Gérald Barré
- Extending HttpClient Testing With Templating
 Adam Storr
- A Closer Look at 5 New Features in C# 10
 Matthew MacDonald
- Build apps for Microsoft Teams with .NET
 John Miller
- C# tip: how to get the index of an item in a foreach loop
 Davide Bellone
- In the Jungle of .NET Obfuscator Tools
 Patrick Smacchia
- Rediscovering implicit casting
 Ken Bonny
- Command Line Arguments and C# 9.0 Top Level Statement
 Abhijit Jana
- Show dotnet: Running my .NET nanoFramework for 8 years on a battery
 Laurent Ellerbach
- A C# Library to Implement Array Tries
 Jorge Luis Orejel
 
Blazor permite crear componentes que son ignorantes respecto al modelo de hosting que están utilizando en tiempo de ejecución. Es decir, si lo diseñamos apropiadamente, un componente podría funcionar indistintamente en Blazor Server y Blazor WebAssembly, lo cual sería ideal desde el punto de vista de su reutilización.
Sin embargo, desde el interior de estos componentes, a veces necesitaremos distinguir cuándo están siendo ejecutados en Blazor Server y cuándo en Blazor WebAssembly. ¿Cómo podemos conseguir esto? Pues tenemos muchas maneras...
Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- ¿Aplicar [Authorize] a todos los controladores MVC de una carpeta?
 José María Aguilar
- Radzen Blazor Components: ¡ahora open source!
 José María Aguilar
.NET Core / .NET
- New LINQ extensions in .NET 6 and benchmarks
 Kristoffer Strube
- Benchmarking 4 reflection methods for calling a constructor in .NET
 Andrew Lock
- Conversation about .NET interop
 Richard Lander
- Working With .NET 6’s PriorityQueue
 Khalid Abuhakmeh
- Quick Tip - Compiler Directives and Using Aliases to Ignore Tests
 Adam Storr
- Migrate or Port Your Old Legacy .net Projects to the .NET5
 Sibeesh Venu
- Interpreting async code in CPU traces
 Mark Downie
- Conversation about the .NET type system
 Richard Lander
- Customizing Serilog text output
 Nicholas Blumhardt
- The Roslyn analyzers I use in my projects
 Gérald Barré
- .NET 6: Collections Improvements
 Jonathan Allen
 
Desde C# 7 podemos emplear patrones en expresiones is o bloques switch para especificar las condiciones que deseamos comprobar, y cada nueva versión del lenguaje sigue introduciendo novedades al pattern matching, haciéndolo cada vez más sencillo y cómodo de utilizar.
En particular, C# 9 ha añadido un montón de características interesantes destinadas a facilitar el uso de patrones, pero en este post vamos a centrarnos en las dos más importantes: los combinadores de patrones y los patrones relacionales.


 
 
 



 
 
 
 
 
 
 
 
 
