Intégration CLR (C++/CX)
Certains types Windows Runtime reçoivent une gestion spéciale en C++/CX et les langages basés sur le Common Language Runtime (CLR). Cet article décrit comment plusieurs types dans un langage sont mappés à un autre langage. Par exemple, le CLR mappe Windows.Foundation.IVector à System.Collections.IList, Windows.Foundation.IMap à System.Collections.IDictionary, et ainsi de suite. De même, C++/CX mappe spécialement des types tels que Platform ::D elegate et Platform ::String.
Mappage de Windows Runtime à C++/CX
Lorsque C++/CX lit un fichier de métadonnées Windows (.winmd), le compilateur mappe automatiquement les espaces de noms et types Windows Runtime courants aux espaces de noms et aux types C++/CX. Par exemple, le type UInt32
Windows Runtime numérique est automatiquement mappé à default::uint32
.
C++/CX mappe plusieurs autres types Windows Runtime à l’espace de noms Platform . Par exemple, le handle Windows ::Foundation HSTRING, qui représente une chaîne de texte Unicode en lecture seule, est mappé à la classe C++/CX Platform::String
. Lorsqu’une opération Windows Runtime retourne une erreur HRESULT, elle est mappée à un C++/CX Platform::Exception
.
Le C++/CX mappe également certains types dans les espaces de noms Windows Runtime pour améliorer les fonctionnalités du type. Pour ces types, C++/CX fournit des constructeurs d’assistance et des méthodes spécifiques à C++ et qui ne sont pas disponibles dans le fichier .winmd standard du type.
Les listes suivantes présentent les structs de valeurs qui prennent en charge les nouvelles méthodes d’assistance et les nouveaux constructeurs. Si vous avez déjà écrit du code qui utilise des listes d’initialisation de struct, modifiez-le pour utiliser les constructeurs qui viennent d’être ajoutés.
Windows::Foundation
Point
Rect
Taille
Windows::UI
- Couleur
Windows::UI::Xaml
CornerRadius
Durée
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
Mappage du CLR à C++/CX
Lorsque les compilateurs Microsoft C++ ou C# lisent un fichier .winmd, ils mappent automatiquement certains types dans le fichier de métadonnées aux types C++/CX ou CLR appropriés. Par exemple, dans le CLR, l’interface IVector<T> est mappée à IList<T>. Toutefois, dans C++/CX, l’interface IVector<T> n’est pas mappée à un autre type.
IReference<T> dans Windows Runtime correspond à Nullable<T> dans .NET.