Dela via


CLR-integrering (C++/CX)

Vissa Windows Runtime-typer får särskild hantering i C++/CX och de språk som baseras på CLR (Common Language Runtime). I den här artikeln beskrivs hur flera typer på ett språk mappar till ett annat språk. CLR mappar till exempel Windows.Foundation.IVector till System.Collections.IList, Windows.Foundation.IMap till System.Collections.IDictionary och så vidare. På samma sätt mappar C++/CX särskilt typer som Platform::D elegate och Platform::String.

Mappa Windows Runtime till C++/CX

När C++/CX läser en Windows-metadatafil (.winmd) mappar kompilatorn automatiskt vanliga Windows Runtime-namnområden och -typer till C++/CX-namnområden och -typer. Till exempel mappas den numeriska Windows Runtime-typen UInt32 automatiskt till default::uint32.

C++/CX mappar flera andra Windows Runtime-typer till plattformsnamnområdet . Till exempel mappas Windows::Foundation HSTRING-referensen, som representerar en skrivskyddad Unicode-textsträng, till klassen C++/CX Platform::String . När en Windows Runtime-åtgärd returnerar felet HRESULT mappas den till en C++/CX Platform::Exception.

C++/CX mappar även vissa typer i Windows Runtime-namnområden för att förbättra funktionen för typen. För dessa typer tillhandahåller C++/CX hjälpkonstruktorer och metoder som är specifika för C++ och som inte är tillgängliga i typens standard.winmd-fil.

Följande listor visar värdestrukturer som stöder nya konstruktorer och hjälpmetoder. Om du tidigare har skrivit kod som använder struct-initieringslistor ändrar du den så att den använder de nyligen tillagda konstruktorerna.

Windows::Foundation

  • Punkt

  • Rekt

  • Storlek

Windows::UI

  • Färg

Windows::UI::Xaml

  • CornerRadius

  • Varaktighet

  • GridLength

  • Tjocklek

Windows::UI::Xaml::Interop

  • Typnamn

Windows::UI::Xaml::Media

  • Matrix

Windows::UI::Xaml::Media::Animation

  • KeyTime

  • Upprepningsbeteende

Windows::UI::Xaml::Media::Media3D

  • Matrix3D

Mappa CLR till C++/CX

När Microsoft C++ eller C#-kompilatorerna läser en .winmd-fil mappar de automatiskt vissa typer i metadatafilen till lämpliga C++/CX- eller CLR-typer. I CLR mappas till exempel IVector<T-gränssnittet> till IList<T>. Men i C++/CX mappas inte IVector<T-gränssnittet> till en annan typ.

IReference<T> i Windows Runtime mappar till Nullable<T> i .NET.

Se även

Samverkan med andra språk