Compartilhar via


Construtores de método geram parâmetros com HasDefaultValue definido como false

System.Reflection.Emit.ConstructorBuilder e System.Reflection.Emit.MethodBuilder agora geram parâmetros de método que, quando são refletidos, têm ParameterInfo.HasDefaultValue definido como false.

Comportamento anterior

Anteriormente, ConstructorBuilder e MethodBuilder geravam IL para parâmetros de método em que os HasDefaultValue dos parâmetros eram definidos como true.

Novo comportamento

Começando no .NET 8, ConstructorBuilder e MethodBuilder geram IL para parâmetros de método onde o HasDefaultValue dos parâmetros é definido como false, que é o valor esperado.

Versão introduzida

.NET 8 versão prévia 5

Tipo de mudança disruptiva

Esta é uma alteração comportamental.

Motivo da alteração

O comportamento anterior estava incorreto, pois nenhum valor de parâmetro padrão foi especificado quando o método ou construtor foi definido.

Se você usar TypeBuilder.DefineConstructor ou TypeBuilder.DefineMethod, certifique-se de que os consumidores dos métodos dos tipos gerados não dependem da propriedade ParameterInfo.HasDefaultValue ser true.

APIs afetadas