CLR 整合 (C++/CX)
某些Windows 執行階段類型會以 C++/CX 接收特殊處理,以及以 Common Language Runtime (CLR) 為基礎的語言。 這篇文章討論一種語言的數個類型如何對應到另一種語言。 例如,CLR 將 Windows.Foundation.IVector 對應到 System.Collections.IList、將 Windows.Foundation.IMap 對應到 System.Collections.IDictionary 等等。 同樣地,C++/CX 特別對應平臺::D elegate 和 Platform::String 等類型。
將Windows 執行階段對應至 C++/CX
當 C++/CX 讀取 Windows 中繼資料 (.winmd) 檔案時,編譯器會自動將一般Windows 執行階段命名空間和類型對應至 C++/CX 命名空間和類型。 例如,數值Windows 執行階段類型 UInt32
會自動對應至 default::uint32
。
C++/CX 會將數個其他Windows 執行階段類型對應至 Platform 命名空間。 例如,代表唯讀 Unicode 文字字串的 Windows::Foundation HSTRING 控制碼會對應至 C++/CX Platform::String
類別。 當Windows 執行階段作業傳回錯誤 HRESULT 時,它會對應至 C++/CX Platform::Exception
。
C++/CX 也會對應Windows 執行階段命名空間中的特定類型,以增強型別的功能。 針對這些類型,C++/CX 會提供 C++ 特有的協助程式建構函式和方法,而且無法在類型的標準 .winmd 檔案中使用。
下列清單顯示支援新建構函式和 Helper 方法的值結構。 如果之前撰寫的程式碼使用結構初始設定清單,請變更為使用新加入的建構函式。
Windows::Foundation
Point
[週框]
大小
Windows::UI
- Color
Windows::UI::Xaml
CornerRadius
期間
GridLength
Thickness
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 中,IVector < T > 介面會對應至 IList < T > 。 但在 C++/CX 中,IVector < T > 介面不會對應至另一種類型。
Windows 執行階段中的 IReference < T > 會對應至 .NET 中的可為 < Null T > 。