Поделиться через


Интеграция со средой 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.

См. также

Взаимодействие с другими языками