Un cliente en Visual C#
Ésta es la apariencia que tiene el cliente en Visual C#:
Lista 1. Cliente en Visual C# (ClientCS.cs)
using System;
using CompVC;
using CompCS;
using CompVB;
// This class exists to house the application's entry point.
class MainApp {
// The static method, Main, is the application's entry point.
public static void Main() {
// Iterate through the component's strings,
// and write them to the console.
CompCS.StringComponent myCSStringComp = new
CompCS.StringComponent();
Console.WriteLine("Strings from C# StringComponent");
for (int index = 0; index < myCSStringComp.Count;
index++) {
Console.WriteLine(myCSStringComp.GetString(index));
}
// Iterate through the component's strings,
// and write them to the console.
CompVC.StringComponent myVCStringComp = new
CompVC.StringComponent();
Console.WriteLine("\nStrings from Visual C++
StringComponent");
for (int index = 0; index < myVCStringComp.Count;
index++) {
Console.WriteLine(myVCStringComp.GetString(index));
}
// Iterate through the component's strings,
// and write them to the console.
CompVB.StringComponent myVBStringComp = new
CompVB.StringComponent();
Console.WriteLine("\nStrings from Visual Basic
StringComponent");
for (int index = 0; index < myVBStringComp.Count;
index++) {
Console.WriteLine(myVBStringComp.GetString(index));
}
}
}
A diferencia del ejemplo en Extensiones administradas de C++, no tiene que importar ahora las bibliotecas. Las podrá especificar en el proceso de compilación. La ventaja de especificar una biblioteca mediante la instrucción using consiste en que using incorpora el espacio de nombres en el programa, lo cual permite hacer referencia a tipos en la biblioteca sin utilizar los nombres de tipo completos. Dado que todos los componentes de ejemplo tienen el mismo nombre de tipo (StringComponent), sigue siendo preciso utilizar el nombre completo para eliminar cualquier tipo de ambigüedad al hacer referencia al método (GetString) y a la propiedad (Count), que son comunes a todos los componentes.
Visual C# también proporciona un mecanismo denominado alias para hacer frente a este problema. Si ha cambiado las instrucciones using convirtiéndolas en las siguientes instrucciones, no deberá utilizar los nombres completos:
using VCStringComp = CompVC.StringComponent;
using CSStringComp = CompCS.StringComponent;
using VBStringComp = CompVB.StringComponent;
El código de cliente es prácticamente idéntico al ejemplo de Extensiones administradas de C++, salvo para los operadores de resolución de ámbito. El código que llama a los tres componentes de cadena también es idéntico, salvo en cuanto a la especificación de la biblioteca que se va a utilizar. Al igual que en el ejemplo de Extensiones administradas de C++, la primera instrucción en cada una de las tres secciones declara una nueva variable local del tipo StringComponent, inicializa la variable y llama a su constructor:
CompCS.StringComponent myCSStringComp = new
CompCS.StringComponent();
Tras escribir una cadena en la consola para indicar que se ha introducido esta parte del programa, el cliente utiliza el valor de la propiedad Count para realizar iteraciones en los miembros del componente de cadena apropiado:
for (int index = 0; index < myVCStringComp.Count;
index++) {
Console.WriteLine(myVCStringComp.GetString(index));
}
Esto es todo lo que se necesita y se repite todo ello para los otros dos componentes de lenguaje.
La generación del nuevo cliente de Visual C# es sencilla. Ahora que utiliza componentes de su propio subdirectorio ..\Bin, deberá incluirlos explícitamente mediante el modificador de compilación /reference:
csc.exe /debug+ /reference:..\Bin\CompCS.dll;
..\Bin\CompVB.dll;..\Bin\CompVC.dll
/out:..\Bin\ClientCS.exe ClientCS.cs
Además, como está generando un programa cliente en lugar de un componente al que se puede llamar desde otros programas, no es necesario utilizar el modificador /t.
Aparte de eso, el proceso es igual al de los anteriores ejemplos de Visual C#. Al ejecutar el programa resultante, el resultado es el siguiente:
C:\...\CompTest\Bin>clientcs
Strings from C# StringComponent
C# String 0
C# String 1
C# String 2
C# String 3
Strings from Visual C++ StringComponent
Visual C++ String 0
Visual C++ String 1
Visual C++ String 2
Visual C++ String 3
Strings from Visual Basic StringComponent
Visual Basic String 0
Visual Basic String 1
Visual Basic String 2
Visual Basic String 3
Vea también
Un cliente en Visual Basic | Un cliente de Windows mediante formularios Windows Forms | Un cliente mediante ASP.NET | Resumen del tutorial sobre la programación | Apéndice A: Herramientas para explorar espacios de nombres