Integrace CLR (C++/CX)
Některé typy prostředí Windows Runtime přijímají speciální zpracování v jazyce C++/CX a jazyky založené na modulu CLR (Common Language Runtime). Tento článek popisuje, jak několik typů v jedné jazykové mapě na jiný jazyk. ClR například mapuje Windows.Foundation.IVector na System.Collections.IList, Windows.Foundation.IMap na System.Collections.IDictionary atd. Podobně C++/CX speciálně mapuje typy, jako jsou Platform::D elegate a Platform::String.
Mapování prostředí Windows Runtime na C++/CX
Když C++/CX přečte soubor metadat Windows (.winmd), kompilátor automaticky mapuje běžné prostředí Windows Runtime obory názvů a typy na obory názvů a typy C++/CX. Například číselný typ prostředí Windows Runtime UInt32
se automaticky mapuje na default::uint32
.
C++/CX mapuje několik dalších typů prostředí Windows Runtime na obor názvů platformy. Například popisovač Windows::Foundation HSTRING, který představuje textový řetězec Unicode jen pro čtení, je mapován na třídu C++/CX Platform::String
. Když operace prostředí Windows Runtime vrátí chybu HRESULT, je namapovaná na C++/CX Platform::Exception
.
C++/CX také mapuje určité typy v prostředí Windows Runtime oborech názvů, aby se zlepšila funkčnost typu. Pro tyto typy poskytuje C++/CX pomocné konstruktory a metody specifické pro jazyk C++ a nejsou k dispozici ve standardním souboru .winmd daného typu.
Následující seznamy zobrazují struktury hodnot, které podporují nové konstruktory a pomocné metody. Pokud jste dříve napsali kód, který používá seznamy inicializace struktur, změňte ho tak, aby používal nově přidané konstruktory.
Windows::Foundation
Bod
Rect
Velikost
Windows::UI
- Color
Windows::UI::Xaml
CornerRadius
Doba trvání
GridLength
Tloušťka
Windows::UI::Xaml::Interop
- TypeName
Windows::UI::Xaml::Media
- Matice
Windows::UI::Xaml::Media::Animation
KeyTime
RepeatBehavior
Windows::UI::Xaml::Media::Media3D
- Matice 3D
Mapování CLR na C++/CX
Když kompilátory Microsoft C++ nebo C# čtou soubor .winmd, automaticky mapují určité typy v souboru metadat na příslušné typy C++/CX nebo CLR. Například v CLR je IVector<T> rozhraní mapováno na IList<T>. V jazyce C++/CX však rozhraní IVector<T> není mapováno na jiný typ.
IReference<T> v prostředí Windows Runtime mapuje na hodnotu Nullable<T> v .NET.