Creando nuestros propios alias
Hace poco vimos que existen alias en C# para los tipos predefinidos de datos, y hasta ahí todo claro. Pero nosotros como programadores también podemos beneficiarnos de crear nuestros propios alias. Hay dos maneras de hacer uso de los alias:
Para tipos de dato
¿No sería fabuloso poder "cambiarle" (entre comillas porque en realidad solamente le estamos dando otro nombre) el nombre a int
? tal vez sea mejor ponerle algo como Entero
. Lo podemos hacer con una sentencia using
de la siguiente manera:
using Entero = System.Int32;
Y después usarlo de la siguiente manera:
Entero uno = 1;
Entero dos = 2;
Console.WriteLine(uno + dos); // Imprimirá 3
Pero bueno, no creo que cambiarle el nombre a un entero les haga mucho sentido, así que trasladémoslo a una aplicación real. Supongamos que tenemos una aplicación que separa el modelo del acceso a datos, dentro de ella también tenemos dos clases llamadas Person
, una dentro del namespace MyApp.DataAccess.Entities
y otra dentro de MyApp.ViewModels.Editable
. Para que la aplicación funcione hay un punto en el que ambas clases deben coincidir para que mapear de una a otra. Sin alias tendríamos que usar el nombre completo de las clases:
public static MyApp.DataAccess.Entities.Person MapPerson(MyApp.ViewModels.Editable.Person person)
{
// ...
Ahora, usando alias reemplazaremos los nombres por algo más corto (y probablemente amigable):
using EntityPerson = MyApp.DataAccess.Entities.Person;
using EditablePerson = MyApp.ViewModels.Editable.Person;
// ... ... ...
public static EntityPerson MapPerson(EditablePerson person)
{
// ...
Para nombres de espacio
Hay que aceptarlo, cambiar el nombre de los tipos puede resultar un poco confuso, pero C# también nos ofrece la posibilidad de ponerle un alias a los namespaces y se hace de la misma manera que para los tipos de dato:
using Ents = MyApp.DataAccess.Entities;
using Edt = MyApp.ViewModels.Editable;
// ... ... ...
public static Ents.Person MapPerson(Edt.Person person)
{
// ...
Gran, gran desventaja
Dejé lo peor para el final: Los alias creados por nosotros solamente son válidos dentro del bloque de código en el que los definamos, ya sea dentro de un namespace
o dentro de un archivo completo, lo cual significa que tenemos que repetirlo para cada archivo en el que lo usemos. Sería muy útil poderlos definir una sola vez a nivel global y después poder usarlas en toda nuestra aplicación.
Mi consejo
Estos alias existen, pero yo procuro no usarlas salvo en casos extremos y es que si no se usan con moderación pueden complicar mucho la lectura del código.