Como crear y usar un ensamblado (.dll) con varias clases (en este caso 2) en C Sharp
12 julio 2010 2 comentarios
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:
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:
Ejecucion del programa:
hasta pronto
hola profe
profe por que ya no da clase