Client dans les extensions managées pour C++
Voici l'aspect du client dans les extensions managées pour C++ :
Listing 1. Client dans les extensions managées pour C++ (ClientVC.cpp)
#using <mscorlib.dll>
using namespace System;
#using "..\Bin\CompCS.dll"
#using "..\Bin\CompVC.dll"
#using "..\Bin\CompVB.dll"
// The method, main, is the application's entry point.
void main() {
// Iterate through the component's strings,
// and write them to the console.
CompCS::StringComponent* myCSStringComp =
new CompCS::StringComponent();
Console::WriteLine
(L"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
(L"\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(L"\nStrings from Visual Basic
StringComponent");
for (int index = 0; index < myVBStringComp->Count;
index++) {
Console::WriteLine(myVBStringComp->
GetString(index));
}
}
La première chose à noter est l'importation des trois composants, qui se trouvent désormais dans les sous-répertoires ..\Bin appropriés :
#using "..\Bin\CompCS.dll"
#using "..\Bin\CompVC.dll"
#using "..\Bin\CompVB.dll"
Les sections du code client qui appellent les trois composants de chaîne sont identiques à l'exception de la spécification relative à la bibliothèque à utiliser. La première instruction figurant dans chacune des trois sections déclare une nouvelle variable locale de type StringComponent (définie dans le composant), initialise la variable et appelle son constructeur :
CompCS::StringComponent* myCSStringComp =
new CompCS::StringComponent();
Après avoir écrit une chaîne dans la console pour indiquer que cette partie du programme a été entrée, le client itère sur les membres du composant de chaîne approprié à l'aide de la valeur de la propriété Count :
for (int index = 0; index < myCSStringComp->Count;
index++) {
Console::WriteLine(myCSStringComp->
GetString(index));
}
C'est tout ce qui est requis et tout est répété pour les deux autres composants de langage.
**Remarque **Si vous aviez utilisé l'approche d'indexeur plutôt que la méthode GetString distincte, le code appelant
myCSStringComp[index]
aurait été plus naturel.
La création du nouveau client des extensions managées pour C++ est simple :
cl.exe /clr /Zi /c ClientVC.cpp
link.exe /debug /nod:libcpmt.lib
kernel32.lib mscoree.lib
/out:..\bin\ClientVC.exe ClientVC.obj
Comme pour les précédents exemples des extensions managées pour C++, le commutateur /clr est nécessaire pour indiquer au compilateur de créer du code managé du Common Language Runtime. L'exécution du programme obtenu génère la sortie suivante :
C:\...\CompTest\Bin>clientvc
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
Voir aussi
Client dans Visual C# | Client dans Visual Basic | Client Windows utilisant Windows Forms | Client utilisant ASP.NET | Résumé du didacticiel de développement | Annexe A : Outils pour l'exploration des espaces de noms