Procedura dettagliata: utilizzo delle funzionalità /clr:pure
Aggiornamento: novembre 2007
In questa procedura dettagliata viene illustrato l'utilizzo della reflection in un'applicazione MSIL di tipo puro. La soluzione Scribble di Windows Form viene estesa in modo da includere alcune classi native che contengono dati statici, nonché esporre controlli Windows Form utilizzabili dalla finestra di progettazione di Windows Form. La generazione dell'esempio con l'opzione /clr:pure consente di illustrare i problemi potenziali che possono verificarsi con questo scenario. Per ulteriori informazioni, vedere Procedura: migrare a /clr:pure.
Prerequisiti
Esempio ScribbleDotNET: estensione di Scribble con funzionalità CLR
Per generare/eseguire l'applicazione di esempio
Scaricare l'esempio ScribbleDotNET.
Aprire il file della soluzione Scribble.sln nell'ambiente di sviluppo di Visual Studio.
Generare la soluzione utilizzando la configurazione “CLR-Pure Debug” oppure “CLR-Pure Release”.
Aprire il componente StringDialog.h nella modalità progettazione.
Verrà visualizza la finestra di progettazione nella quale sarà presente un'istanza di “ScribbleCustomControl”.
Tecnologie
Nuova sintassi C++ per .NET
Reflection
marshal_as<T> per accedere a tipi nativi da classi gestite.
In questo esempio viene creata una classe non gestita, di cui successivamente viene eseguito il wrapping in una classe del controllo gestito. Quando si esegue la compilazione in un'applicazione MSIL di tipo puro, è possibile eseguire la reflection del file EXE risultante e caricare il controllo gestito da utilizzare in Progettazione Windows Form. Questo comportamento è possibile solo quando la configurazione corrente deve creare un'applicazione MSIL di tipo puro e non in modalità non gestita o mista.
All'interno del controllo, si crea un'istanza di un'istanza di una classe nativa. Le informazioni necessarie sono rappresentate da una stringa nativa. La sintassi marshal_as < T > viene utilizzata per convertire i dati a un tipo di dati gestito è possibile utilizzare in un'applicazione che supporta le librerie CLR. Per ulteriori informazioni sulla libreria del marshalling, vedere Overview of Marshaling in C++.
Vedere anche
Concetti
Language Features for Targeting the CLR