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 struct
Deep 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 conCreateInstance()
.
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.