Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

17 años online

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web
ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
martes, 5 de octubre de 2021

.NET CoreSeguro que estáis acostumbrados a ver y escribir las, a veces extensas, listas de directivas using encabezando vuestros archivos de código fuente C#. Aunque ciertamente los entornos de desarrollo actuales son de bastante ayuda a la hora de introducirlos e incluso a veces nos permiten colapsarlos, son unos grandes consumidores del valioso espacio vertical de nuestros monitores:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// ... (muchos using más)

namespace MyApplication
{
    public class MyClass
    {
        ...
    }
}

Pero si habéis trabajado con Razor, ya sea para crear vistas MVC/Razor Pages o bien desde Blazor, seguro que os habrán encantado los archivos tipo _ViewImports.cshtml o _Imports.razor, pues permiten introducir directivas que se apliquen a todos los archivos Razor del proyecto. 

¿No sería buena idea llevar esto mismo a nivel del lenguaje?

Pues sí que lo es, y de hecho es una de las útiles características que han sido introducidas en C# 10, disponible a partir de la llegada de .NET 6. A partir de esta versión, es posible utilizar la directiva global using para referenciar namespaces en un único punto del código, evitando así su introducción en el resto del proyecto.

Para utilizar esta característica, basta con insertar en el encabezado de cualquier archivo C# los using que nos interesen que estén presentes en el resto de archivos .cs del proyecto:

global using System;
global using System.Collections.Generic;
global using System.Linq;
global using System.Text;
global using System.Threading.Tasks;
...

Obviamente, en lugar de usar la directiva global using de forma descontrolada, podríamos unificarlas todas en un archivo llamado, por ejemplo, GlobalUsings.cs en la carpeta raíz del proyecto, centralizando así su declaración.

En la práctica, la introducción de esas directivas globales será equivalente a haber introducido esas líneas en cada uno de los archivos .cs del proyecto. De hecho, si en algún archivo individual repitiésemos uno de los using, Visual Studio nos avisaría y nos facilitaría la eliminación de la redundancia:

El IDE avisando que la directiva using no es necesaria

Por último, es interesante saber que, además de definir using globales desde código, podemos hacerlo usando el archivo de configuración .csproj:

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        ...
    </PropertyGroup>
    <ItemGroup>
        <Using Include="System" />
        <Using Include="System.Text" />
        <Using Include="System.Threading.Tasks" />
    </ItemGroup>
</Project>

En definitiva, sin duda una buena opción para ahorrarnos pulsaciones de teclas y dejar nuestro código fuente cada vez más ligero.

Publicado en Variable not found.

Aún no hay comentarios, ¡sé el primero!