Integración de CLR (C++/CX)
Algunos tipos de Windows Runtime reciben un tratamiento especial en C++/CX y los lenguajes basados en Common Language Runtime (CLR). En este artículo se describe la manera en que varios tipos de un lenguaje se asignan a otro lenguaje. Por ejemplo, CLR asigna Windows.Foundation.IVector to System.Collections.IList, Windows.Foundation.IMap to System.Collections.IDictionary, etc. De forma similar, C++/CX asigna especialmente tipos como Platform::Delegate y Platform::String.
Asignación de Windows Runtime a C++/CX
Cuando C++/CX lee un archivo de metadatos de Windows (.winmd), el compilador asigna automáticamente espacios de nombres y tipos comunes de Windows Runtime a espacios de nombres y tipos de C++/CX. Por ejemplo, el tipo UInt32
numérico de Windows Runtime se asigna automáticamente a default::uint32
.
C++/CX asigna otros tipos de Windows Runtime al espacio de nombres Platform. Por ejemplo, el controlador HSTRING Windows::Foundation, que representa una cadena de texto Unicode de solo lectura, se asigna a la clase Platform::String
de C++/CX. Cuando una operación de Windows Runtime devuelve un error HRESULT, se asigna a Platform::Exception
de C++/CX.
C++/CX también asigna determinados tipos en espacios de nombres de Windows Runtime para mejorar la funcionalidad del tipo. Para estos tipos, C++/CX ofrece métodos y constructores auxiliares que son específicos de C++ y que no están disponibles en el archivo .winmd estándar del tipo.
En las listas siguientes se muestran estructuras de valor que admiten nuevos métodos del asistente y constructores. Si ha escrito código anteriormente que usa listas de inicialización de estructuras, cámbielo para usar los constructores recién agregados.
Windows::Foundation
Point
Rect
Size
Windows::UI
- Color
Windows::UI::XAML
CornerRadius
Duration
GridLength
Thickness
Windows::UI::XAML::Interop
- TypeName
Windows::UI::Xaml::Media
- Matriz
Windows::UI::XAML::Media::Animation
KeyTime
RepeatBehavior
Windows::UI::Xaml::Media::Media3D
- Matrix3D
Asignación de CLR a C++/CX
Cuando los compiladores de Microsoft C++ o C# leen un archivo .winmd, asignan automáticamente determinados tipos del archivo de metadatos a los tipos de CLR o C++/CX adecuados. Por ejemplo, en CLR, la interfaz IVector<T> se asigna a IList<T>. Pero en C++/CX, la interfaz IVector<T> no se asigna a otro tipo.
IReference<T> de Windows Runtime se asigna a Nullable<T> en .NET.