lunes, 29 de abril de 2019
Por si te lo perdiste...
- 30 Leyes epónimas relacionadas con el desarrollo de software (I)
 José María Aguilar
- El filtro [ApiController] en ASP.NET Core MVC 2.1
 José María Aguilar
.NET / .NET Core
- Announcing the .NET Framework 4.8
 Namrata Karnam
- Announcing .NET Core 3 Preview 4
 Richard Lander
- Upcoming Updates for .NET Framework 4.8
 Brett Lopez
- Introducing .NET for Apache® Spark™ Preview
 Ankit Asthana
- AutoMapper 8.1.0 Released
 Jimmy Bogard
- HTTP Live Streaming (HLS-VOD)
 Shashangka Shekhar
- Smooth Transactions with TransactionScope
 Rion Williams
- Commit Your Scripts
 K. Scott Allen
- Global State in C# Applications - Part 1
 Yacoub Massad
- Migrating Net Framework to Netcore
 Chris F Carroll
- Creating a Faster HashSet for .NET
 Peter Devo
- Implementing Indexers in C#
 Peter Mbanugo
- 6 Easy Ways to Export Data to Excel in C#
 Johnson Manohar
- Adventures in .NET Core SDK Installation: Missing SDKs and 32 bit vs 64 bit
 Rick Strahl
- ASCII Art in .NET Code
 Matt Warren
- Indices, Ranges, and Null-coalescing Assignments - A Look at New language features in C# 8
 Matthias Koch
- 7 Debugging Techniques for when your .NET application Freezes (hangs)
 Michael Shpilt
- First Steps in porting Markdown Monster WPF App to .NET Core 3.0
 Rick Strahl
- What types should I use to pass collections in C#?
 Mark Heath
- C# Operators: A Detailed Guide to All Of Them
 Phil Vuollet
- Writing to CSV-file from multiple threads
 Gunnar Peipman
- Multi-targetting .Net Framework and .Net Core in a single project
 Chris F. Carroll
- C# 8: Using statement
 Olivier Giss
- Explicit Interface Implementation with C#
 Christian Nagel
- Sharing Context in MediatR Pipelines
 Jimmy Bogard
- Pulling Objects from Web Services with ReadAsAsync
 Peter Vogel
- Creating Sample Data for C#
 Bruno Sonnino
- Using await using (IAsyncDisposable) with ConfigureAwait & Extravaganza using ConfigureAwait, await and await foreach
 Jiří Činčura
- Diferencias entre conversiones implícitas y explícitas en C# y cómo crear conversiones propias
 Jorge Turrado
miércoles, 24 de abril de 2019
 Al hilo del post de ayer, uno de los problemas que vamos a encontrar cuando instalemos versiones preliminares del SDK de .NET Core es que éstas se establecen como las versiones por defecto para el equipo.
Al hilo del post de ayer, uno de los problemas que vamos a encontrar cuando instalemos versiones preliminares del SDK de .NET Core es que éstas se establecen como las versiones por defecto para el equipo.Por ejemplo, si instalamos en nuestro equipo la preview del SDK 3.0, a partir de ese momento todos los comandos de la CLI se ejecutarán utilizando esta versión preliminar, como cuando creamos un nuevo proyecto usando
dotnet new; en este caso, el proyecto se construirá usando la plantilla proporcionada por la versión más actual del framework (aunque sea preview), lo cual puede resultar molesto en algunas ocasiones.En este post vamos a ver cómo el propio SDK dispone de mecanismos que nos permiten seleccionar una versión específica, para lo cual trataremos varios comandos útiles de la CLI.
martes, 23 de abril de 2019
 Como sabréis, C# 8 está aún en preview, pero hace ya tiempo que estamos recibiendo información sobre las novedades que traerá la nueva versión de nuestro querido lenguaje: rangos, tipos referencia anulables, mejoras en patrones, más usos de
Como sabréis, C# 8 está aún en preview, pero hace ya tiempo que estamos recibiendo información sobre las novedades que traerá la nueva versión de nuestro querido lenguaje: rangos, tipos referencia anulables, mejoras en patrones, más usos de using... pinta divertido, sin duda :DEn el futuro iremos comentando las características más interesantes, pero, de momento, este post vamos a dedicarlo exclusivamente a ver cómo podemos comenzar a probar C# 8 desde nuestro flamante Visual Studio 2019 u otros entornos, como VS Code o incluso la CLI.
Si aún no habéis tenido el ratillo para instalar la última versión de Visual Studio, ya estáis tardando ;DEl único problema es que necesitamos compiladores que entiendan la sintaxis de C# 8, y de momento esto sólo es posible usando la preview de .NET Core 3. Pero vaya, nada que no podamos solucionar en un par de minutos; veamos cómo.
lunes, 15 de abril de 2019
Por si te lo perdiste...
- Indicios de que tu interfaz de usuario fue creado por un programador
 José María Aguilar
- ¿Dónde está la directiva @helper de Razor en ASP.NET Core?
 José María Aguilar
.NET / .NET Core
- Best 20 dot Net Core Libraries Every Developer should know
 Shehryar Khan
- C# 8: indexes and ranges
 Olivier Giss
- string vs. String is not a style debate
 Jared Parsons
- Why You Should Prefer a Single Line for C# Properties
 Thomas Claudius Huber
- Using, using, using with C# 8
 Christian Nagel
- Tuesday Quickie: When closure bites (or how not to configure Newtonsoft.Json)
 Joel Hammon
- Using strongly-typed entity IDs to avoid primitive obsession Part 1 & Part 2
 Andrew Lock
martes, 9 de abril de 2019
 Hace unas semanas leía el post C# Async Antipatterns de Mark Heath, y encontré en él problemas en la implementación de código asíncrono que, coincidiendo con el autor, creo que son bastante frecuentes.
Hace unas semanas leía el post C# Async Antipatterns de Mark Heath, y encontré en él problemas en la implementación de código asíncrono que, coincidiendo con el autor, creo que son bastante frecuentes.Como la asincronía ha llegado para quedarse y aún hay desarrolladores que no lo tienen claro del todo, he pensado que sería interesante traducir y republicar aquí el post, por supuesto, con permiso expreso de su autor (thank you, Mark! ;))
¡Vamos allá!
lunes, 8 de abril de 2019
Por si te lo perdiste...
- Ilities
 José María Aguilar
- El nuevo tipo de retorno ActionResult<T> en ASP.NET Core 2.1
 José María Aguilar
.NET / .NET Core
- Modernize Your C# Code
 Florian Rappl
- Getting .NET Core 3 Preview to Work in Visual Studio 2019
 Jeremy Clark
- How to Beat Array Iteration Performance with Parallelism in C# .NET
 Michael Shpilt
- Making It Up as You Go Along with ExpandoObjects
 Peter Vogel
- Kirill’s Whitespace Guidelines for C#
 Kirill Osenkov
- Task.IsCompletedSuccessfully
 Jeremy Clark
- List vs IEnumerable vs IQueryable vs ICollection vs IDictionary
 Mahsa Hassankashi
- New C# 8 Features in Visual Studio 2019
 Damir Arh
- ConcurrentDictionary + closure = 💔
 Gérald Barré
martes, 2 de abril de 2019
El problema
En el escenario concreto que planteaba nuestro querido lector era que quería proporcionar, a los componentes que necesitaban acceder a datos en su aplicación, un acceso limitado al contexto de datos de Entity Framework.Para ello, por un lado definía una interfaz parecida a la siguiente, que proporcionaba acceso a los repositorios:
public interface IUserRepositories
{
    DbSet<User> Users { get; }
    ...
}
public interface IUnitOfWork
{
    int SaveChanges();
}
IUserRepositories, mientras que si necesitaba persistir datos, recibiría adicionalmente un objeto IUnitOfWork, por ejemplo:public class UserServices
{
    ...
    public UserServices(IMapper mapper, IUserRepositories userRepos, IUnitOfWork uow) 
    { 
        _mapper = mapper;
        _userRepos = userRepos;
        _uow = uow;
    }
    public async Task Update(int id, UserDto user) 
    {
        var user = await _userRepos.Users.FirstOrDefaultAsync(u=>u.Id == id);
        if(user == null)
            throw new Exception();
        
        _mapper.Map(userDto, user);
        await _uof.SaveChangesAsync();
    }
}
lunes, 1 de abril de 2019
Por si te lo perdiste...
- Adivina, adivinanza: ¿por qué no compila este código?
 José María Aguilar
- Inicializar a null propiedades sin tipo
 José María Aguilar
.NET / .NET Core
- Accepting Partial Resources with Newtonsoft.Json
 Florian Rappl & Manuel Römer
- AutoMapper's Design Philosophy
 Jimmy Bogard
- Using .NET PInvoke for Linux system functions
 Tom Deseyn
- Hosting DI Container with .NET Core 3.0
 Christian Nagel
- C# Multithreaded Resource Access – Locks, Monitors and Mutex
 John Demetriou
- Migrating Delegate.BeginInvoke Calls for .NET Core
 Mike Rousos
- .NET Core Workers as Windows Services
 Glenn Condron


 
 
 



 
 
 
 
 
 
 
 
 
