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 instância System.Type com novos recursos, como Type.IsFunctionPointer. Anteriormente, a instância System.Type retornada era o tipo IntPtr.
Usar System.Type dessa maneira é semelhante a como outros tipos são expostos, como ponteiros (Type.IsPointer) e matrizes (Type.IsArray).
Atualmente, essa nova funcionalidade é implementada apenas no runtime do CoreCLR e no MetadataLoadContext. O suporte para os runtimes Mono e NativeAOT é esperado posteriormente.
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 mudou.
Comportamento anterior
Anteriormente, typeof(delegate*<void>())
retornava o tipo System.IntPtr 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 tipo IntPtr não permitia acesso aos tipos de parâmetro, tipo de retorno ou convenções de chamada.
Novo comportamento
typeof
e reflexão agora usam 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 Preview 2
Tipo de alteração interruptiva
Esta é uma alteração comportamental.
Motivo da 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 o C# 9 e o .NET 5, mas o suporte à reflexão não foi adicionado naquele momento.
Ação recomendada
Se você quiser que seu código dê suporte a ponteiros de função e os trate especialmente, use a nova API Type.IsFunctionPointer.