Un client nelle estensioni gestite per C++

Di seguito viene illustrato l'aspetto del client nelle estensioni gestite per C++:

Listato 1. Client nelle estensioni gestite per 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));
   }
}

Si noti innanzitutto l'importazione dei tre componenti, ciascuno dei quali è ora incluso nella giusta sottodirectory ..\Bin:

#using "..\Bin\CompCS.dll"
#using "..\Bin\CompVC.dll"
#using "..\Bin\CompVB.dll"

Le sezioni del codice client che eseguono la chiamata alle tre stringhe sono identiche, con la sola differenza della specifica della libreria da utilizzare. La prima istruzione di ciascuna delle tre sezioni consente di dichiarare una nuova variabile locale, definita nel componente, di tipo StringComponent, di inizializzare la variabile e di chiamare il relativo costruttore:

CompCS::StringComponent* myCSStringComp = 
new CompCS::StringComponent();

Al termine della scrittura di una stringa nella console per indicare che si è entrati in questa parte del programma vengono scorsi i membri del componente stringa appropriato utilizzando il valore della proprietà Count:

for (int index = 0; index < myCSStringComp->Count; 
    index++) {
    Console::WriteLine(myCSStringComp-> 
 GetString(index));
}

Non serve altro e tutto viene ripetuto per i componenti sviluppati negli altri due linguaggi.

**Nota   **Se si fosse utilizzato l'approccio tradizionale tramite l'uso di un indice invece del metodo GetString separato, sarebbe stato utilizzato il codice di chiamata myCSStringComp[index].

La creazione del client con le estensioni gestite per C++ è un'operazione semplice:

cl.exe /clr /Zi /c ClientVC.cpp
link.exe /debug /nod:libcpmt.lib 
    kernel32.lib mscoree.lib 
    /out:..\bin\ClientVC.exe ClientVC.obj

Come negli esempi precedenti relativi alle estensioni gestite per C++, è necessario specificare l'opzione /crl per indicare al compilatore che deve essere creato codice gestito Common Language Runtime. Quando si esegue il programma risultante viene generato quanto segue:

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

Vedere anche

Un client in Visual C# | Un client in Visual Basic | Un client Windows utilizzando Windows Form | Un client utilizzando ASP.NET | Riepilogo dell'esercitazione di sviluppo | Appendice A: strumenti per l'esplorazione degli spazi dei nomi