Os 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 refletidos, definem ParameterInfo.HasDefaultValue como false
.
Comportamento anterior
Anteriormente, ConstructorBuilder e MethodBuilder geravam IL para parâmetros de método em que o HasDefaultValue dos parâmetros era definido como true
.
Novo comportamento
A partir do .NET 8, ConstructorBuilder e MethodBuilder geram IL para parâmetros de método em que o HasDefaultValue dos parâmetros é definido como false
, que é o valor esperado.
Versão introduzida
.NET 8 versão prévia 5
Tipo de alteração interruptiva
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.
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 dependem da propriedade ParameterInfo.HasDefaultValue ser true
.
APIs afetadas
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de