IntPtr não é mais usado para tipos de ponteiro de função
Como um novo recurso de reflexão, um tipo de ponteiro de função agora é uma System.Type instância com novos recursos, como Type.IsFunctionPointer. Anteriormente, a instância retornada System.Type era do IntPtr tipo.
O uso System.Type dessa maneira é semelhante à forma como outros tipos são expostos, como ponteiros (Type.IsPointer) e matrizes (Type.IsArray).
Essa nova funcionalidade está atualmente implementada no tempo de execução do CoreCLR e no MetadataLoadContext. O suporte para os tempos de execução Mono e NativeAOT é esperado mais tarde.
Uma instância de ponteiro de função, que é um endereço físico para uma função, continua a ser representada como um IntPtr; apenas o tipo de reflexão foi alterado.
Comportamento anterior
Anteriormente, typeof(delegate*<void>())
retornava o System.IntPtr tipo para um tipo de ponteiro de função. Da mesma forma, a reflexão também retornou esse tipo para um tipo de ponteiro de função, como com FieldInfo.FieldType. O IntPtr tipo não permitia nenhum acesso aos tipos de parâmetro, tipo de retorno ou convenções de chamada.
Novo comportamento
typeof
e reflexão agora usado System.Type para um tipo de ponteiro de função, que fornece acesso aos tipos de parâmetro, tipo de retorno e convenções de chamada.
Versão introduzida
.NET 8 Visualização 2
Tipo de mudança de rutura
Esta mudança é uma mudança comportamental.
Razão para a alteração
Essa alteração adiciona a capacidade de obter metadados de ponteiro de função, incluindo tipos de parâmetro, o tipo de retorno e as convenções de chamada. O suporte ao ponteiro de função foi adicionado com C# 9 e .NET 5, mas o suporte à reflexão não foi adicionado naquele momento.
Ação recomendada
Se você quiser que seu código ofereça suporte a ponteiros de função e os trate de forma especial, use a nova Type.IsFunctionPointer API.