Partager via


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