Como crear y usar un ensamblado (.dll) con varias clases (en este caso 2) en C Sharp

El siguiente codigo muestra como se crea un ensamblado (.dll), el cual contiene dos clases en su interior; cada una con funcionalidades diferentes. pero antes hablare un poco sobre los Espacios de Nombres (namespaces):

Espacios de nombres:

Un name space es algo asi como un nombre que indentifica a un conjunto de varias clases. Los name spaces ayudan a agrupar y organizar a las clases para distinguirlas de otras que puedan tener el mismo nombre. De esta forma con los namespaces podemos tener clases con el mismo nombre pero definidas en namespaces diferentes.

Por ejemplo; en .NET esta definido el namespace System y el cual contiene a muchas, muchas clases, entre ellas hemos utilizado la clase Console (System.Console) para mostrar mensajes en pantalla.

Bien, el objetivo de este post es mostrar como se define un espacio de nombre y no me interesa tanto la teoria; por que yo ya entendi como funciona, ahora me interesa la practica. Si tu no sabes como funciona espero que con esto te quede claro, sino; hay muchos manuales y tutoriales en la red, buscate uno y lee un poco, bueno aca el codigo:

/*
Descripcion: Este programa muestra como crear un ensamblado con varias clases (en este caso 2)
Fecha:		 19/06/2010
Archivo:     Gonzasilve_Practica5.cs
Author:      Gonzalo Silverio  gonzasilve@gmail.com
Compilar con:     csc /t:library Gonzasilve_Practica5.cs
*/

using System;

namespace Gonzasilve
{
    /* CLASE QUE MUESTRA VARIOS MENSAJES CON DIFERENTES COLORES */
    public static class MSGSColor
    {
        public static void Rojo(String texto)
        {
            Console.ForegroundColor = ConsoleColor.Red;     //definir color rojo
            Console.Write(texto);                           //Mostrar el texto al usuario
            Console.ResetColor();                           //Resetear el color x default
        }
        public static void Verde(String texto)
        {
            Console.ForegroundColor = ConsoleColor.Green;     //definir color verde
            Console.Write(texto);                           //Mostrar el texto al usuario
            Console.ResetColor();                           //Resetear el color x default
        }
        public static void Azul(String texto)
        {
            Console.ForegroundColor = ConsoleColor.Blue;     //definir color azul
            Console.Write(texto);                           //Mostrar el texto al usuario
            Console.ResetColor();                           //Resetear el color x default
        }
        public static void Amarillo(String texto)
        {
            Console.ForegroundColor = ConsoleColor.Yellow;     //definir color amarillo
            Console.Write(texto);                           //Mostrar el texto al usuario
            Console.ResetColor();                           //Resetear el color x default
        }
        public static void VerdeOscuro(String texto)

        {
            Console.ForegroundColor = ConsoleColor.DarkGreen;     //definir color verde oscuro
            Console.Write(texto);                           //Mostrar el texto al usuario
            Console.ResetColor();                           //Resetear el color x default
        }
        public static void Magenta(String texto)
        {
            Console.ForegroundColor = ConsoleColor.Magenta;     //definir color magenta
            Console.Write(texto);                           //Mostrar el texto al usuario
            Console.ResetColor();                           //Resetear el color x default
        }
        public static void Blanco(String texto)
        {
            Console.ForegroundColor = ConsoleColor.White;     //definir color blanco
            Console.Write(texto);                           //Mostrar el texto al usuario
            Console.ResetColor();                           //Resetear el color x default
        }
    }

    /* CLASE QUE REALIZA LAS 4 OPERACIONES BASICAS DE MATEMATICAS */
    public static class OperacionesMath
    {
        public static int suma(int a, int b)
        {
            return a + b;
        }
        public static int resta(int a, int b)
        {
            if (a > b)
                return a - b;
            else
                return b - a;
        }
        public static int producto(int a, int b)
        {
            return a * b;
        }
        public static double division(int a, int b)
        {
            if (a > b)
                return a / b;
            else
                return b / a;
        }
    }

}

Nada mas como observacion rapida; en el namespace que se llama Gonzasilve hay definidas dos clases (MSGSColor y OperacionesMath) que son estaticas (static); por lo tanto todos sus metodos de ambas clases son estaticos tambien, de esta manera para llamar a alguno de los metodos no hay que definir un nuevo objeto de esa clase. Este ensamblado hay que compilarlo con el parametro target, que en forma abreviada es una t. Aca un pantallazo de la compilacion de este ensamblado:

Compilando ensamblado

Una vez compilado si revisamos la carpeta donde esta el ensamblado se ha generado un nuevo archivo llamado Gonzasilve_Practica5.dll lo cual es algo asi como una libreria; lo siguiente es crear un programa que haga uso de esta.

En el siguiente codigo se puede ver que se piden dos numeros y a continuacion se realizan las 4 operaciones basicas con dichos numeros y se muestra en pantalla los resultados con mensajes de diferente color:

/*
Descripcion: Este programa muestra usar un ensamblado definido por el usuario
Fecha:		 19/06/2010
Archivo:     Practica5Prueba.cs
Compilar con:     csc /r:Gonzasilve_Practica5.dll Practica5Prueba.cs
*/

using System;
using Gonzasilve;

public class Practica5Prueba
{
    public static void Main()
    {
        //Declaracion de variables
        int num_a, num_b,res;
        double res_division;
        //Informacion al usuario
        Console.Clear();
        MSGSColor.Blanco("Este programa hace uso de un ensamblado (.dll) definido por el \n usuario");
        MSGSColor.Blanco(" a continuacion se le pediran 2 numeros y posteriormente se realizaran las 4");
        MSGSColor.Blanco(" operaciones basicas de Matematicas y se mostraran los resultados.");
        Console.WriteLine();

        //lectura de datos de entrada
        MSGSColor.Azul("Escriba el primer numero: ");
        num_a = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine();
        MSGSColor.Rojo("Escriba el segundo numero: ");
        num_b = Convert.ToInt32(Console.ReadLine());

        //Proceso de datos de entrada y salida de informacion
        Console.WriteLine();
        res = OperacionesMath.suma(num_a,num_b);
        MSGSColor.Amarillo("La suma: "+num_a+" + "+num_b+" = "+res);

        Console.WriteLine();
        res = OperacionesMath.resta(num_a, num_b);
        MSGSColor.Verde("La resta: " + num_a + " - " + num_b + " = " + res);

        Console.WriteLine();
        res = OperacionesMath.producto(num_a, num_b);
        MSGSColor.Magenta("El producto: " + num_a + " x " + num_b + " = " + res);

        Console.WriteLine();
        res_division = OperacionesMath.division(num_a, num_b);
        MSGSColor.VerdeOscuro("El cociente: " + num_a + " / " + num_b + " = " + res_division);
    }
}

Observe como se incluyoel la libreria (ensamblado) en este programa con la directiva using, tambien observe como se usan los metodos de las dos diferentes clases del ensamblado (MSGSColor y OperacionesMath). Para compilar el programa anterior se debe enlazar el ensamblado que se esta usando; el cual es el que habiamos creado antes. Para hacer esto se hace con el parametro resource que en forma abreviada es una r. A continuacion un pantallazo de la compilacion y ejecucion del programa:

Compilacion:

Compilando prueba de ensamblado

Ejecucion del programa:

Ejecutando prueba de ensamblado C Sharp

hasta pronto

Acerca de gonzasilve
Freelance Web Developer.

2 Responses to Como crear y usar un ensamblado (.dll) con varias clases (en este caso 2) en C Sharp

  1. marisol says:

    profe por que ya no da clase

Deja un comentario