Integrazione CLR (C++/CX)
Alcuni tipi di Windows Runtime ricevono una gestione speciale in C++/CX e i linguaggi basati su Common Language Runtime (CLR). Questo articolo illustra il mapping di numerosi tipi di un linguaggio in un altro linguaggio. Ad esempio, CLR esegue il mapping di Windows.Foundation.IVector to System.Collections.IList, Windows.Foundation.IMap a System.Collections.IDictionary e così via. Analogamente, C++/CX esegue appositamente il mapping dei tipi, ad esempio Platform::D elegate e Platform::String.
Mapping di Windows Runtime a C++/CX
Quando C++/CX legge un file di metadati Windows (winmd), il compilatore esegue automaticamente il mapping di spazi dei nomi e tipi Windows Runtime comuni a spazi dei nomi e tipi C++/CX. Ad esempio, il tipo UInt32
numerico di Windows Runtime viene mappato automaticamente a default::uint32
.
C++/CX esegue il mapping di diversi altri tipi di Windows Runtime allo spazio dei nomi Platform . Ad esempio, l'handle HSTRING di Windows::Foundation , che rappresenta una stringa di testo Unicode di sola lettura, viene mappato alla classe C++/CX Platform::String
. Quando un'operazione di Windows Runtime restituisce un errore HRESULT, viene eseguito il mapping a un C++/CX Platform::Exception
.
C++/CX esegue anche il mapping di determinati tipi negli spazi dei nomi di Windows Runtime per migliorare la funzionalità del tipo. Per questi tipi, C++/CX fornisce costruttori e metodi helper specifici di C++ e non sono disponibili nel file winmd standard del tipo.
Gli elenchi seguenti illustrano gli struct di valore che supportano i nuovi costruttori e metodi helper. Se in precedenza è stato scritto codice che usa gli elenchi di inizializzazione degli struct, modificarlo in modo da usare i costruttori aggiunti di recente.
Windows::Foundation
Point
Rect
Dimensione
Windows::UI
- Color
Windows::UI::Xaml
CornerRadius
Durata
GridLength
Thickness
Windows::UI::Xaml::Interop
- TypeName
Windows::UI::Xaml::Media
- Matrice
Windows::UI::Xaml::Media::Animation
KeyTime
RepeatBehavior
Windows::UI::Xaml::Media::Media3D
- Matrix3D
Mapping di CLR a C++/CX
Quando i compilatori Microsoft C++ o C# leggono un file con estensione winmd, eseguono automaticamente il mapping di determinati tipi nel file di metadati ai tipi C++/CX o CLR appropriati. Ad esempio, in CLR l'interfaccia IVector<T> viene mappata a IList<T>. In C++/CX, tuttavia, l'interfaccia IVector<T> non è mappata a un altro tipo.
IReference<T> in Windows Runtime esegue il mapping a T> nullable<in .NET.