Partilhar via


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

Alguns tipos do Tempo de Execução do Windows recebem tratamento especial em C++/CX e nas linguagens baseadas no Common Language Runtime (CLR). Este artigo discute como vários tipos em um idioma são mapeados para outro idioma. 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, o C++/CX mapeia especialmente tipos como Platform::D elegate e Platform::String.

Mapeando o Tempo de Execução do Windows para C++/CX

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

C++/CX mapeia vários outros tipos do Tempo de Execução do Windows para o namespace Platform . Por exemplo, o identificador HSTRING Windows::Foundation , que representa uma cadeia de texto Unicode somente leitura, é mapeado para a classe C++/CX Platform::String . Quando uma operação do Tempo de Execução do Windows retorna um erro HRESULT, ela é mapeada para um C++/CX Platform::Exception.

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

As listas a seguir mostram estruturas de valor que oferecem suporte a novos construtores e métodos auxiliares. Se você tiver escrito anteriormente código que usa listas de inicialização struct, altere-o para usar os construtores recém-adicionados.

Windows::Fundação

  • Ponto

  • Rect

  • Tamanho

Windows::UI

  • Cor

Windows::UI::Xaml

  • Raio de canto

  • Duração

  • GridLength

  • Espessura

Windows::UI::Xaml::Interoperabilidade

  • NomeDoTipo

Windows::UI::Xaml::Media

  • Matriz

Windows::UI::Xaml::Media::Animação

  • Tempo-chave

  • RepeatBehavior

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

  • Matrix3D

Mapeando o 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 os tipos C++/CX ou CLR apropriados. Por exemplo, no CLR, a interface IVector<T> é mapeada para IList<T>. Mas em C++/CX, a interface IVector<T> não é mapeada para outro tipo.

IReference<T> no Tempo de Execução do Windows mapeia para Nullable<T> no .NET.

Ver também

Interoperando com outros idiomas