Compartir a través de


Los generadores de métodos generan parámetros con HasDefaultValue establecido en false

System.Reflection.Emit.ConstructorBuilder y System.Reflection.Emit.MethodBuilder ahora generan parámetros de método que, al ser reflejados, tienen ParameterInfo.HasDefaultValue establecido en false.

Comportamiento anterior

Anteriormente, ConstructorBuilder y MethodBuilder generaban IL para definir los parámetros de método donde el HasDefaultValue de los parámetros se establecían en true.

Nuevo comportamiento

A partir de .NET 8, ConstructorBuilder y MethodBuilder generan IL para parámetros de método donde el HasDefaultValue de los parámetros se establece en false, que es el valor esperado.

Versión introducida

.NET 8 (versión preliminar 5)

Tipo de cambio disruptivo

Este es un cambio de comportamiento.

Motivo del cambio

El comportamiento anterior era incorrecto, ya que no se especificaron valores de parámetro predeterminados cuando se definió el método o constructor.

Si usa TypeBuilder.DefineConstructor o TypeBuilder.DefineMethod, asegúrese de que los consumidores de los métodos de los tipos generados no se basan en la ParameterInfo.HasDefaultValuepropiedad sea true.

Las APIs afectadas