Compartilhar via


Reflexão e .NET Nativo

No .NET Framework, o desenvolvimento gerenciado dá suporte à metaprogramação por meio da API de reflexão. A reflexão permite inspecionar objetos em um aplicativo, chamar métodos em objetos descobertos por meio de inspeção, gerar novos tipos no tempo de execução e oferece suporte a muitos outros cenários de código dinâmico. Ele também oferece suporte à serialização e desserialização, o que permite que os valores do campo do objeto sejam mantidos e restaurados posteriormente. Todos esses cenários exigem o compilador do .NET Framework JIT (just-in-time) para gerar código nativo com base em metadados disponíveis.

O runtime do .NET Native não inclui um compilador JIT. Como resultado, todo o código nativo necessário deve ser gerado com antecedência. Um conjunto de heurística é usado para determinar qual código deve ser gerado, mas esses heurística não pode abranger todos os cenários de metaprogramação possíveis. Portanto, você deve fornecer dicas para esses cenários metaprogramação usando diretivas de runtime. Se o código de implementação ou de metadados necessário não está disponível em tempo de execução, seu aplicativo gerará uma exceção MissingMetadataException, MissingRuntimeArtifactException ou MissingInteropDataException. Estão disponíveis duas soluções de problemas que gerarão a entrada apropriada para seu arquivo de diretivas de runtime, a qual elimina a exceção:

Observação

Para obter uma visão geral do processo de compilação do .NET Native que fornece informações de contexto sobre a necessidade de ter um arquivo das diretivas de runtime, consulte .NET Native e compilação.

Além disso, o .NET Native não permite que você reflita sobre membros privados da biblioteca de classes do .NET Framework. Por exemplo, uma chamada para a propriedade TypeInfo.DeclaredFields para recuperar os campos de um tipo de biblioteca de classes do .NET Framework retorna somente campos públicos ou protegidos.

Os artigos a seguir fornecem a documentação conceitual e de referência necessária para dar suporte à reflexão e à serialização em seus aplicativos:

Confira também