Os construtores de métodos geram parâmetros com HasDefaultValue definido como false
System.Reflection.Emit.ConstructorBuilder e System.Reflection.Emit.MethodBuilder agora gerar parâmetros de método que, quando refletidos, foram ParameterInfo.HasDefaultValue definidos como false
.
Comportamento anterior
Anteriormente, ConstructorBuilder e MethodBuilder gerou IL para parâmetros de método onde o HasDefaultValue dos parâmetros foi definido como true
.
Novo comportamento
A partir do .NET 8, ConstructorBuilder e MethodBuilder gerar 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 Visualização 5
Tipo de mudança de rutura
Esta mudança é uma mudança comportamental.
Razão para a 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.
Ação recomendada
Se você usar TypeBuilder.DefineConstructor ou TypeBuilder.DefineMethod, certifique-se de que os consumidores dos métodos dos tipos gerados não confiem na ParameterInfo.HasDefaultValue propriedade sendo true
.