Интеграция со средой CLR (C++/CX)
Некоторые типы среда выполнения Windows получают специальную обработку в C++/CX и языках, основанных на среде CLR. В этой статье рассматривается сопоставление определенных типов в одном языке с другим языком. Например, среда CLR сопоставляет Windows.Foundation.IVector с System.Collections.IList, Windows.Foundation.IMap с System.Collections.IDictionary и т. д. Аналогичным образом, C++/CX специально сопоставляет типы, такие как Platform::D elegate и Platform::String.
Сопоставление среда выполнения Windows с C++/CX
Когда C++/CX считывает файл метаданных Windows (WINMD), компилятор автоматически сопоставляет общие пространства имен и типы имен среда выполнения Windows пространствам имен C++/CX и типам. Например, числовой среда выполнения Windows тип UInt32
автоматически сопоставляется с default::uint32
.
C++/CX сопоставляет несколько других типов среда выполнения Windows с пространством имен платформы. Например, дескриптор Windows::Foundation HSTRING, представляющий текстовую строку юникода только для чтения, сопоставляется с классом C++/CX Platform::String
. Когда операция среда выполнения Windows возвращает ошибку HRESULT, она сопоставляется с C++/CXPlatform::Exception
.
C++/CX также сопоставляет определенные типы в пространствах имен среда выполнения Windows для улучшения функциональности типа. Для этих типов C++/CX предоставляет вспомогательные конструкторы и методы, относящиеся к C++ и недоступные в стандартном winmd-файле типа.
В следующих списках приведены структуры значений, поддерживающие новые конструкторы и вспомогательные методы. Если ранее вы написали код, использующий списки инициализации структуры, измените его, чтобы применить новые конструкторы.
Windows::Foundation
Point
Rect
Размер
Windows::UI
- Color
Windows::UI::Xaml
CornerRadius
Duration
GridLength
Толщина
Windows::UI::Xaml::Interop
- TypeName
Windows::UI::Xaml::Media
- «Матрица»
Windows::UI::Xaml::Media::Animation
KeyTime
RepeatBehavior
Windows::UI::Xaml::Media::Media3D
- Matrix3D
Сопоставление среды CLR с C++/CX
Когда компиляторы Microsoft C++ или C# считывают winmd-файл, они автоматически сопоставляют определенные типы в файле метаданных с соответствующими типами C++/CX или CLR. Например, в среде CLR интерфейс T IVector<T> сопоставляется с IList<T>. Но в C++/CX интерфейс T IVector<T> не сопоставляется с другим типом.
IReference<T> в среда выполнения Windows сопоставляется с nullable<T> в .NET.