Compartilhar via


Integração CLR (C++/CX)

Alguns tipos do Windows Runtime recebem tratamento especial no C++/CX e nas linguagens que usam o CLR (Common Language Runtime). Este artigo aborda como vários tipos em uma linguagem são mapeados para outra linguagem. Por exemplo, o CLR mapeia Windows.Foundation.IVector para System.Collections.IList, Windows.Foundation.IMap para System.Collections.IDictionary e assim por diante. Da mesma forma, em particular, C++/CX mapeia tipos como Platform::Delegate e Platform::String.

Mapeando o Windows Runtime para C++/CX

Quando o C++/CX lê um arquivo de metadados (.winmd) do Windows, o compilador mapeia automaticamente namespaces Windows Runtime comuns e tipifica para namespaces e tipos C++/CX. Por exemplo, o tipo numérico UInt32 do Windows Runtime é mapeado automaticamente para default::uint32.

O C++/CX mapeia vários outros tipos de Windows Runtime para o namespace Plataform. Por exemplo, o manipulador STRING Windows::Foundation, que representa uma cadeia de caracteres de texto Unicode somente leitura, é mapeada para a classe C++/CX Platform::String. Quando uma operação de Windows Runtime retorna um ERRO HRESULT, ela é mapeada para um C++/CX Platform::Exception.

O C++/CX também mapeia determinados tipos nos namespaces do Windows Runtime para aprimorar a funcionalidade do tipo. Para esses tipos, o C++/CX fornece construtores e métodos auxiliares que são específicos para o C++ e que não estão disponíveis no arquivo .winmd padrão do tipo.

A lista a seguir mostra as structs de valor que dão suporte a novos construtores e métodos auxiliares. Se você tiver gravado anteriormente um código que usa listas de inicialização de struct, altere-o para usar os construtores recém-adicionados.

Windows::Foundation

  • Ponto

  • Rect

  • Tamanho

Windows::UI

  • Color

Windows::UI::Xaml

  • CornerRadius

  • Duration

  • GridLength

  • Espessura

Windows::UI::Xaml::Interop

  • TypeName

Windows::UI::Xaml::Media

  • Matriz

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

  • KeyTime

  • RepeatBehavior

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

  • Matrix3D

Mapeamento do CLR para C++/CX

Quando os compiladores do Microsoft C++ ou C# leem um arquivo .winmd, eles mapeiam automaticamente determinados tipos no arquivo de metadados para tipos C++/CX ou CLR apropriados. Por exemplo, no CLR, a interface IVector<T> é mapeada para IList<T>. Porém, em C++/CX, a interface IVector<T> não está mapeada para outro tipo.

IReference<T> no Windows Runtime mapeia para Nullable<T> no .NET.

Confira também

Como interoperar com outras linguagens