Métodos de extensión de C# para librerías dll en ASP.NET Core

Los métodos de extensión son una funcionalidad de C#, que nos permite agregar nuevos métodos a clases ya existentes sin necesidad de modificarlas, alterarlas o recompilarlas.

En este Post veremos, a través de un ejemplo práctico, cómo extender las funcionalidades de una librería dll (biblioteca de clases) añadiéndole nuevos métodos de extensión, por supuesto sin modificar o recompilar la librería dll original. 

 

Paso 1: La librería dll y la aplicación Web

Supongamos que estamos trabajando con un proyecto Web ASP.NET Core MVC (WebAppCalculadora.csproj) que depende de una librería dll externa (Calculadora.dll).

webappcalculadora

La librería externa Calculadora.dll, provee a la aplicación Web de una sería de métodos que realizan las operaciones matemáticas básicas sobre dos operandos de la siguiente forma (a+b), (a-b), (a*b) y (a/b)

webappcalculadora2

El código de la librería Calculadora.dll sería el siguiente:

namespace Calculadora
{
    public class Operacion
    {
        public double Operando1 { get; set; } = 0;
        public double Operando2 { get; set; } = 0;

        public double Sumar()
        {
            return Operando1 + Operando2;
        }
        public double Restar()
        {
            return Operando1 - Operando2;
        }
        public double Multiplicar()
        {
            return Operando1 * Operando2;
        }
        public double Dividir()
        {
            if (Operando2 != 0)
                return Operando1 / Operando2;
            else
                throw new DivideByZeroException("Error!. División entre 0.");
        }
    }
}

 

Paso 2: La librería dll de extensión (Wrapper)

Supongamos en este momento, que necesitamos para nuestra aplicación una serie de métodos adicionales que implementen las operaciones matemáticas de potencia (elevado a 'n') de la siguiente forma: (a+b)n, (a-b)n, (a*b)n y (a/b)n .

Para esto, crearemos una nueva biblioteca de clases llamada CalculadoraWrapper que "extenderá" a la anterior librería Calculadora.dll

Importante: El proyecto donde creemos la biblioteca de clases CalculadoraWrapper, debe importar como referencia la librería Calculadora.dll

 

Dentro de esta nueva biblioteca CalculadoraWrapper, crearemos una nueva clase estática llamada Operacion.cs, en la cual implementaremos los nuevos métodos de potencia que necesitamos.

Debemos de tener en cuenta varios puntos importantes para la nueva clase Operacion.cs:

1) La clase debe ser estática.

2) Los métodos de la clase deben ser también estáticos.

3) Cada método de la clase debe recibir como parámetro un objeto de la clase a la cual se quiere extender, precedida por this.

El código de la biblioteca CalculadoraWrapper sería el siguiente:

namespace CalculadoraWrapper
{
    public static class Operacion
    {
        public static double SumarPow(this Calculadora.Operacion operacion, double pow)
        {
            return Math.Pow(operacion.Sumar(), pow);
        }
        public static double RestarPow(this Calculadora.Operacion operacion, double pow)
        {
            return Math.Pow(operacion.Restar(), pow);
        }
        public static double MultiplicarPow(this Calculadora.Operacion operacion, double pow)
        {
            return Math.Pow(operacion.Multiplicar(), pow);
        }
        public static double DividirPow(this Calculadora.Operacion operacion, double pow)
        {
            return Math.Pow(operacion.Dividir(), pow);
        }
    }
}

Para finalizar este paso, compilaremos la biblioteca CalculadoraWrapper, y generaremos la librería dll correspondiente (CalculadoraWrapper.dll).

calculadora-wrapper

 

Paso 3: El resultado final

Una vez generada la librería CalculadoraWrapper.dll con los nuevos métodos de extensión, la agregaremos como referencia al proyecto ASP.NET MVC inicial WebAppCalculadora.csproj.

webappcalculadora4

Para comprobar la nueva funcionalidad, solo deberemos hacer referencia al nuevo ensamblado (CalculadoraWrapper.dll) en el Controlador correspondiente mediante la directiva using.

using CalculadoraWrapper;

Para finalizar compilaremos el proyecto, y ya podremos utilizar los nuevos métodos de extensión

webappcalculadora3

 

 

  Compartir


  Nuevo comentario

El campo Comentario es obligatorio.
El campo Nombre es obligatorio.

  Comentarios

No hay comentarios para este Post.



Utilizamos cookies propias y de terceros para mejorar nuestros servicios y ofrecerle una mejor experiencia de navegación. Si continúa navegando consideramos que acepta su uso. Más información   Acepto