CLR-Integration (C++/CX)
Einige Windows-Runtime Typen erhalten spezielle Behandlung in C++/CX und den Sprachen, die auf der Common Language Runtime (CLR) basieren. Dieser Artikel behandelt, wie verschiedene Typen in einer Sprache einer anderen Sprache zugeordnet werden. Beispielsweise ordnet die CLR „Windows.Foundation.IVector“ zu „System.Collections.IList“, „Windows.Foundation.IMap“ zu „System.Collections.IDictionary“ zu usw. Ebenso werden speziell C++/CX-Typen wie Platform::D elegate und Platform::String zugeordnet.
Zuordnen des Windows-Runtime zu C++/CX
Wenn C++/CX eine Windows-Metadatendatei (WINMD) liest, wird vom Compiler automatisch gängige Windows-Runtime Namespaces und Typen zu C++/CX-Namespaces und -Typen zugeordnet. Beispielsweise wird der numerische Windows-Runtime Typ UInt32
automatisch zugeordnetdefault::uint32
.
C++/CX ordnet mehrere andere Windows-Runtime Typen dem Platform-Namespace zu. Beispielsweise wird das Windows::Foundation HSTRING-Handle, das eine schreibgeschützte Unicode-Textzeichenfolge darstellt, der C++/CX-Klasse Platform::String
zugeordnet. Wenn ein Windows-Runtime-Vorgang einen Fehler HRESULT zurückgibt, wird er einem C++/CX Platform::Exception
zugeordnet.
C++/CX ordnet auch bestimmte Typen in Windows-Runtime Namespaces zu, um die Funktionalität des Typs zu verbessern. Für diese Typen stellt C++/CX Hilfskonstruktoren und -methoden bereit, die für C++ spezifisch sind und in der Winmd-Standarddatei des Typs nicht verfügbar sind.
Die folgende Liste enthält Wertstrukturen, die neue Konstruktoren und Hilfsmethoden unterstützen. Wenn Sie bisher Code erstellt haben, der mit Strukturinitialisierungslisten arbeitet, stellen Sie ihn auf die neu hinzugefügten Konstruktoren um.
Windows::Foundation
Point
Rect
Größe
Windows::UI
- Color
Windows::UI::Xaml
CornerRadius
Duration
GridLength
Stärke
Windows::UI::Xaml::Interop
- TypeName
Windows::UI::Xaml::Media
- Matrix
Windows::UI::Xaml::Media::Animation
KeyTime
RepeatBehavior
Windows::UI::Xaml::Media::Media3D
- Matrix3D
Zuordnen der CLR zu C++/CX
Wenn die Microsoft C++- oder C#-Compiler eine WINMD-Datei lesen, ordnen sie bestimmte Typen in der Metadatendatei automatisch den entsprechenden C++/CX- oder CLR-Typen zu. Beispielsweise wird in der CLR die IVector<T-Schnittstelle> IList<T> zugeordnet. In C++/CX ist die IVector<T-Schnittstelle> jedoch keinem anderen Typ zugeordnet.
IReference<T> im Windows-Runtime ist nullable<T> in .NET zugeordnet.