Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Como nueva característica de reflexión, un tipo de puntero de función es ahora una instancia System.Type con nuevas funcionalidades, como Type.IsFunctionPointer. Previamente, la System.Type instancia devuelta era del tipo IntPtr.
El uso System.Type de esta manera es similar a cómo se exponen otros tipos, como punteros (Type.IsPointer) y matrices (Type.IsArray).
Esta nueva funcionalidad se implementa actualmente en el entorno de ejecución de CoreCLR y en MetadataLoadContext. Se espera compatibilidad con los entornos de ejecución Mono y NativeAOT más adelante.
Una instancia de puntero de función, que es una dirección física a una función, continúa representándose como IntPtr; solo ha cambiado el tipo de reflexión.
Comportamiento anterior
Anteriormente, typeof(delegate*<void>()) devolvía el tipo System.IntPtr para un puntero de función. De forma similar, la reflexión también devolvió este tipo para un tipo de puntero de función, como con FieldInfo.FieldType. El IntPtr tipo no permitió ningún acceso a los tipos de parámetros, al tipo de valor devuelto ni a las convenciones de llamada.
Nuevo comportamiento
typeof y la reflexión ahora usan System.Type para un tipo de puntero de función, que proporciona acceso a los tipos de parámetros, el tipo de valor devuelto y las convenciones de llamada.
Versión introducida
.NET 8 Preview 2
Tipo de cambio disruptivo
Este es un cambio de comportamiento.
Motivo del cambio
Este cambio agrega la capacidad de obtener metadatos de puntero de función, incluidos los tipos de parámetro, el tipo de valor devuelto y las convenciones de llamada. La compatibilidad con el puntero de función se agregó con C# 9 y .NET 5, pero la compatibilidad con la reflexión no se agregó en ese momento.
Acción recomendada
Si quiere que el código admita punteros de función y los trate especialmente, use la nueva Type.IsFunctionPointer API.